1

我声明我的变量

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,然后我尝试匹配该返回值以确定警报状态是否应该触发。这个 if 语句是在 compareLimit 之后写的

  if (exceedLimit = 2)
             logSubsystem();

当我运行这个程序时,我的超出限制立即触发并且我的 logsubsystem 函数被调用......但是因为我exceedLimit = 0在我的 cpp 文件的开头声明了这怎么可能?

4

1 回答 1

6

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

if (exceedLimit = 2)在这里,您将值2分配给exceedLimit而不是将其值与2进行比较。

请注意,赋值表达式返回分配的值,在这种情况下if(exceedLimit = 2)将始终为true ,这就是为什么始终执行if 语句下方的代码的原因。

于 2013-03-27T21:32:18.927 回答