遇到好的案例总是有必要记录下来的。
规则书上明明白白写着,但教科书上基本上很少给出一些案例。
上代码:
int main()
{
int a = 2;
int b = 3;
if (a & b != 0) {
printf("if-block\n");
} else {
printf("else-block\n");
}
return 0;
}
聪明点的编译器会给出warning,比如手头的VS2010:
warning C4554: “&”: 检查运算符优先级可能存在的错误;使用圆括号阐明优先级
不过很常见的是:对warning视而不见的不在少数。
正确的做法:
if ((a & b) != 0)