随着新的gcc版本获得"警告:bool comparision"

时间:2018-01-05 01:54:40

标签: c

if (!TempMode == TEMP) {
//code
}

日志: :警告:比较常数' 10'布尔表达式总是为false [-Wbool-compare]     if(!TEMPMode == TEMP){

1 个答案:

答案 0 :(得分:5)

这实际上是运算符优先级的问题。首先计算一元!,计算SimReleaseMode的逻辑NOT;这是一个布尔数量(类型为int,因为C)然后 用作比较的左手操作数。 GCC知道布尔量(0或1)的可能数值都不能等于RELEASE_MODE_MIXED(数值2),所以它会警告你。

你可能打算写

if (!(SimReleaseMode == RELEASE_MODE_MIXED))

或更具惯用力

if (SimReleaseMode != RELEASE_MODE_MIXED)