功能条件被满足

问题描述:

我声明我的可变功能条件被满足

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 ??

+3

经典错误:'exceedLimit = 2'需要多一个'='。 – cnicutar 2013-03-27 21:32:07

+0

'if(exceedLimit = 2)' - >'if(exceedLimit == 2)' – imreal 2013-03-27 21:32:11

+0

[这就是为什么我要投票并关闭。](http://meta.stackexchange.com/questions/167342/ close-all-the-typo-questions) – 2013-03-27 21:35:10

if (exceedLimit = 2)应该是if (exceedLimit == 2)

if (exceedLimit = 2)在这里你要指定其值与价值到exceedLimit不能及的。

注意返回指定的值,在这种情况下if(exceedLimit = 2)转让的表达将永远真正,这就是为什么if语句总是执行的下面的代码。

+3

如果你在最现代化的编译器上设置了足够高的警告级别,它会向你发出警告。古老的学校避免这个问题的方式是颠倒过来。即如果(2 = exceedLimit)会在你不使用==的情况下选择错误。 – 2013-03-27 21:34:20

+0

即使我这样做,它立即进入警报,当我启动程序。发布答案的上一张海报建议将其写为:exceedlimit = compareLimit(selectChannel,exceedLimit),然后使用double equals作为等价运算符 – 2013-03-27 21:35:16