根据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.