##自增减运算符
++(自增1) --(自减1)
int x=0,y=0;
++x; y++; 语句运行之后x和y的结果都为1
x=0,y=0;
int m=0,n=0;
m = ++x; 相当于: x = x+1; m = x; 先自增运算,再计算表达式
n = y++; 相当于: n = y; y = y+1; 先计算表达式,然后再自增
#例:
int a = 10;
int b = a++ + ++a;
//b = 22 a = 12
a = 10;
a = a++ + ++a;// 23
##关系(比较)运算符
int a = 55;
if(0<a<2){// 0<a 结果是0或者1 0<2 1<2 恒为真
##逻辑运算符
短路特性:
当&&连接的多个表达式前面的结果为false时,后面的表达式不再执行
(false && 无论&&右边的结果是true还是false都不会影响表达式最终的结果)
当||连接的多个表达式前面的结果为true时,后面的表达式不再执行
false && expr expr不会计算
true || expr expr不会计算
a||b&&c ==> a||(b&&c)
a&&b||c ==> (a&&b)||c
#例:
int a = 0, b = 0, c = 0;
int res = a++>0 && b++ > 0 || ++c > 0;// (a++>0 && b++>0) || ++c>0;
//(a++>0 && b-0.000001~0.000001++>0) || ++c >0;
printf(“a = %d , b = %d , c = %d , res = %d\n”,a,b,c,res);
a = 0,b = 0, c = 0;
res = ++c > 0 || (++a > 0 && b++ > 0);// ++c>0 || ++a>0 && b++>0
printf(“a = %d , b = %d , c = %d , res = %d\n”,a,b,c,res);
##sizeof 内存宽度运算符
sizeof(‘a’) == 4 'a’其实认为是整数
sizeof© == 1 c是变量 变量的类型是char,char一定是一字节
sizeof(c+1) == 4
sizeof(++c) == 1
sizeof(c+b) == 4
sizeof(c=b+c) == 1
表达式在进行计算时数据会进行转换
char->int short->int
unsigned char --> unsigned int
sizeof(函数名) == 1
sizeof(函数名(参数)) == 函数声明返回值类型宽度 函数并不会调用
sizeof(指针) == 4/8
##运算符优先级:
! > 算术优先级 > 关系运算符 > && > || > 赋值运算符
~ > 算术 > 移位