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) )

这样使得层次更加清晰,维护起来更加方便。

posted on 2011-02-25 17:59  startup  阅读(164)  评论(0)    收藏  举报

导航