功能条件被满足
我声明我的可变功能条件被满足
int exceedLimit = 0;
我调用一个函数
compareLimit(selectChannel,exceedLimit);
此功能检查选择信道的当前值,并且如果它超过了当前设定的极限(上限设为100,下限为50)。默认情况下,它不应该被触发,直到用户改变一些值。
int compareLimit (int channelID, int isLimitExceeded)
{
if (temperatureChannel[channelID].currentTemperature > temperatureChannel[channelID].highLimit || temperatureChannel[channelID].currentTemperature < temperatureChannel[channelID].lowLimit)
isLimitExceeded = 2;
else
isLimitExceeded = 1;
return isLimitExceeded;
}
现在,这里是在下一行代码的问题....在前面的功能我回到isLimitExceeded,然后我尝试在返回的值相匹配,以确定是否报警状态应该引起OT没有。这个if语句compareLimit后立即书面
if (exceedLimit = 2)
logSubsystem();
当我运行这个程序,我exceedLimit立即触发和我logsubsystem函数被调用...但是这怎么可能,因为我在我的cpp文件的开头声明exceedLimit = 0
??
if (exceedLimit = 2)
应该是if (exceedLimit == 2)
。
if (exceedLimit = 2)
在这里你要指定其值与价值到exceedLimit
不能及的。
注意返回指定的值,在这种情况下if(exceedLimit = 2)
转让的表达将永远真正,这就是为什么if语句总是执行的下面的代码。
如果你在最现代化的编译器上设置了足够高的警告级别,它会向你发出警告。古老的学校避免这个问题的方式是颠倒过来。即如果(2 = exceedLimit)会在你不使用==的情况下选择错误。 – 2013-03-27 21:34:20
即使我这样做,它立即进入警报,当我启动程序。发布答案的上一张海报建议将其写为:exceedlimit = compareLimit(selectChannel,exceedLimit),然后使用double equals作为等价运算符 – 2013-03-27 21:35:16
经典错误:'exceedLimit = 2'需要多一个'='。 – cnicutar 2013-03-27 21:32:07
'if(exceedLimit = 2)' - >'if(exceedLimit == 2)' – imreal 2013-03-27 21:32:11
[这就是为什么我要投票并关闭。](http://meta.stackexchange.com/questions/167342/ close-all-the-typo-questions) – 2013-03-27 21:35:10