一句话理解
运算优先级决定先算谁。不确定就加括号。
为什么要学
少写括号造成的 bug 非常隐蔽。
讲解
大致从高到低:! 和 ++ → * / % → + - → 比较 → && → || → 赋值。
x & 1 == 1 会先算 1==1,位运算就错了。应写 (x & 1) == 1。
可读性比少打两键重要。宁可多括号。
例子
cout << (1 + 2 * 3) << "\n";
cout << ((1 + 2) * 3);
输出:
7
9
乘比加优先,所以第一行 1+6=7;第二行括号强迫先加。
常见错误
- 位运算和比较混用不加括号。
- 赋值和比较混用。