人不是通过用计算器学会的计算,但却是靠此手段忘记了算术。
复合赋值运算符一例
运行程序屏幕输出的是什么数字?
是 14 .
说明复合赋值运算符的优先级低于 + 运算符, x *= a + b 等价于 x = x*(a + b);
连续赋值一例:
运行程序屏幕输出的是什么?
是 6 6.000000
将浮点数6.8赋值给整数a,发生类型转换,a 的值是 6.然后把a的值赋给 b ,整型转换成浮点型,得 6.0
运算符的优先级和结合性
当两个或更多的运算符出现在同一个表达式中时,我们先确定各个运算符的优先级,优先级最高的最先运算。同级的运算符看结合性。
结合性分左结合和右结合。
左结合即在同级运算中从左向右运算。
比如对于同级的二元运算符+、—就是左结合性,有:
i + j — k 等价于 (i + j)— k。
部分C语言运算符表
优先级 类型名称 符号 结合性
1 (后缀)自增 ++ 左结合
(后缀)自减 ——
2 (前缀)自增 ++ 右结合
(前缀)自增 ——
一元正号 +
一元负号 —
3 乘法类 * / % 左结合
4 加法类 + — 左结合
5 赋值 = *= /= += -= 右结合
如:
a = b += c++ - d + --e / -f
我们用圆括号来展示运算顺序即:
a = b += (((c++) - d) + ((--e) / (-f)))