点这里:https://wenku.baidu.com/view/f3cbe70c90c69ec3d5bb757a?pcf=2&sfr_fb=0
重点: int i =0;
int a=++i:a的值是2,i的值是2
int a=i++:a的值是i,i的值是2,执行完这段话才付值
i++`++i单独使用效果一样,for 循环里面i++,++i效果一样
1.&= 位逻辑与赋值
2.|= 位逻辑或赋值
3.^= 位逻辑异或赋值
<-- 101010 101010 101010
& 011100 | 011100 ^ 011100
--------- ---------- ----------
001000 111110 110110-->
4.<<= 左移赋值
5.>>= 右移赋值
<--0000 1100 -- 10进制12
左移一位 0001 1000 -- 10进制24
右移一位 0000 0110 -- 10进制6*-->
a=(b>0)?b:-b;
当b>0时,a=b;当b不大于0时,a=-b;这就是条件表达式。其实上面的意思就是把b的绝对值赋值给a。
假设b=2,c=7,d=5,
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
下面是C语言中所使用的运算符的优先级和结合性:
优先级 运算符 结合性
(最高) () [] -> . 自左向右
! ~ ++ -- + - * & sizeof 自右向左
* / % 自左向右
+ - 自左向右
<< >> 自左向右
< <= > >= 自左向右
== != 自左向右
& 自左向右
^ 自左向右
| 自左向右
&& 自左向右
|| 自左向右
?: 自右向左
= += -= *= /= %= &= ^= |= <<= >>= 自右向左
(最低)
, 自左向右
网友评论