This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
6年前关闭。
我声明我的变量
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;

}

下面是下一行代码中的问题……在上一个函数中,我返回了islimitexeded,然后尝试匹配返回的值,以确定是否应该触发ot not警报状态这个if语句写在compareLimit之后
  if (exceedLimit = 2)
             logSubsystem();

当我运行这个程序时,我的exceedLimit会立即触发并调用我的logsubsystem函数……但是,既然我在cpp文件的开头声明了exceedLimit = 0,这怎么可能呢??

最佳答案

if (exceedLimit = 2)应该是if (exceedLimit == 2)
if (exceedLimit = 2)这里您将值2赋给exceedLimit而不是将其值与2进行比较。
注意,赋值的表达式返回赋值,在这种情况下if(exceedLimit = 2)将始终为true,这就是为什么if语句下面的代码总是执行的原因。

09-25 19:14