异或
#include <stdio.h>
int main()
{
//异或:相同则假,不同为真
//同0同1都为假,否则为真
int num_1 = 0x01; //0000 0001
int num_2 = 0x03; //0000 0011
//异或 num_1 ^ num_2; //0000 0010
printf("异或结果: %x \n",num_1 ^ num_2);
//不需要中间变量直接进行交换数据
num_1 = num_1 ^ num_2; //0000 0001 ^ 0000 0011 == 0000 0010 -> 2 == 0x02
num_2 = num_1 ^ num_2; //0000 0010 ^ 0000 0011 == 0000 0001 -> 1 == 0x01
num_1 = num_1 ^ num_2; //0000 0010 ^ 0000 0001 == 0000 0011 -> 3 == 0x03
//num_1 = 0x03
//num_2 = 0x01
printf("num_1 = %#04x\tnum_2 = %#04x\n",num_1,num_2);
return 0;
}
运行结果
_1 = 0x03 num_2 = 0x01
逗号表达式
#include <stdio.h>
int main()
{
//逗号表达式
int num_a = 0;
int num_b = 0;
num_a = 10 , num_b = 20;
num_a = (10,20,30,40,543); //选择最后一个表达式的值进行返回
printf("num_a = %d\t,num_b = %d\n",num_a,num_b);
return 0;
}
,优先级最低 结合方向:从左到右
类型转换
#include <stdio.h>
int main()
{
//隐式类型转化,自动类型转化
int num_a = 3;
float num_b = 2;
printf("%d / %G = %G\n",num_a,num_b,num_a / num_b);
// 3 / 2 = 1.5,
// 108
int num_1 = 108 / 100; // 1
int num_2 = (108 - 100) / 10; // 0
int num_3 = 108 % 100; // 8
printf("得到三位数:%d %d %d\n",num_1,num_2,num_3);
return 0;
}
3 / 2 = 1.5
得到三位数:1 0 8
强制类型转换
掉精度