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();

このプログラムを実行すると、exceedLimit がすぐにトリガーされ、logsubsystem 関数が呼び出されますexceedLimit = 0

4

1 に答える 1

6

if (exceedLimit = 2)する必要がありますif (exceedLimit == 2)

if (exceedLimit = 2)ここでは、値2を割り当てており、その値を2exceedLimitと比較していません。

割り当ての式は、割り当てられた値を返すことに注意してください。この場合if(exceedLimit = 2)は常にtrueになります。そのため、 if ステートメントの下のコードが常に実行されます。

于 2013-03-27T21:32:18.927 に答える