小编Par*_*nse的帖子

这个C/C++ if()语句是否可以评估为TRUE?

根据PC-lint,以下声明永远不会是TRUE:

if((variable & 0x02) == 1)
Run Code Online (Sandbox Code Playgroud)

我正在为嵌入式系统使用C编译器,TRUE只要设置了相应的位,就会对其进行评估variable.我想编译器正在进行TRUE/ FALSE比较两侧==而不是比较结果数字.换句话说,每次表达式(varable & 0x02)不为零(即TRUE)时,语句也将是TRUE,因为值1 is also TRUE(不为零).

我不知道C/C++标准是否清楚地定义了编译器在这种情况下应该如何表现.是否有C/C++专家可以根据标准(例如C90, C99,等)所说的回答这个问题?

PS:在上面的语句中,"variable"是一个unsigned char.

c c++ if-statement conditional-statements

5
推荐指数
2
解决办法
1388
查看次数

标签 统计

c ×1

c++ ×1

conditional-statements ×1

if-statement ×1