根据 PC-lint,以下语句永远不会是TRUE
:
if((variable & 0x02) == 1)
我正在使用一个嵌入式系统的C编译器,它在对应位于“variable”中设置时将其评估为
TRUE
。我猜测编译器正在执行==
两侧的TRUE
/FALSE
比较,而不是比较结果数字。换句话说,每次表达式(varable & 0x02)
不为零(即TRUE
)时,语句也将是TRUE
,因为值1 也是 TRUE
(不为零)。我不知道标准是否清楚地定义了编译器在这种情况下应该如何行事。是否有任何基于标准(例如等)回答此问题的专家?
附:以上语句中,“variable”是无符号字符。