我宣布我的变量
int exceedLimit = 0;
Run Code Online (Sandbox Code Playgroud)
我叫一个功能
compareLimit(selectChannel,exceedLimit);
Run Code Online (Sandbox Code Playgroud)
此功能检查选择通道的当前值以及是否超出当前设置限制(上限设置为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;
}
Run Code Online (Sandbox Code Playgroud)
现在这是下一行代码中的问题....在上一个函数中我返回isLimitExceeded,然后我尝试匹配该返回值以确定警报状态是否应该触发.这个if语句是在compareLimit之后写的
if (exceedLimit = 2)
logSubsystem();
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,我的beyondLimit会立即触发并且我的logsubsystem函数被调用...但是,这是怎么回事,因为我exceedLimit = 0在我的cpp文件的开头声明了?
if (exceedLimit = 2)应该是if (exceedLimit == 2).
if (exceedLimit = 2)在这里,您将值2分配给它,exceedLimit而不是将其值与2进行比较.
请注意,赋值的表达式返回赋值,在这种情况下if(exceedLimit = 2)将始终为true,这就是if-statement下面的代码始终执行的原因.