在没有条件的情况下执行功能条件

时间:2013-03-27 21:30:49

标签: c function return

我宣布我的变量

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,那该怎么办?

1 个答案:

答案 0 :(得分:6)

if (exceedLimit = 2)应为if (exceedLimit == 2)

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

请注意,赋值的表达式返回指定的值,在这种情况下if(exceedLimit = 2)将始终 true ,这就是为什么下面的代码> if-statement 总是被执行。