我宣布我的变量
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();
当我运行这个程序时,我的beyondLimit会立即触发并调用我的logsubsystem函数......但是,如果我在cpp文件的开头声明exceedLimit = 0
,那该怎么办?
答案 0 :(得分:6)
if (exceedLimit = 2)
应为if (exceedLimit == 2)
。
if (exceedLimit = 2)
您在此处将值 2 分配给exceedLimit
,而不是将其值与 2 进行比较。
请注意,赋值的表达式返回指定的值,在这种情况下if(exceedLimit = 2)
将始终 true ,这就是为什么下面的代码> if-statement 总是被执行。