3. 减少表达式对C语言运算符优先级的依赖性
在更多情况下,应该用括号() 来保证运算顺序,而不依赖于C语言默认的运算符优先级。
分析下面程序:
if( reg & BUSY_MASK == 0) {
do something;
}
该程序的本意是读状态寄存器的值,判断BUSY位是否为0.
但是,由于判断运算符“==”的优先级高于位操作符“&”,
实际的判断表达式变成了“( reg & (BUSY_MASK == 0) !=0)”,
所以应该加入括号以保证判断表达式的正确性。
在程序中,容易出现混淆的地方,也应该用括号来组织语句,如:
if( a && b || c && d)
应该改为:
if( (a && b) || (c && d) )
这样使得层次更加清晰,维护起来更加方便。
浙公网安备 33010602011771号