共用方式為


C6235

警告 C6235: (<非零常數> || <運算式>) 永遠為非零的常數

這則警告表示在測試內容中產生之邏輯 OR 運算的左邊偵測到非零的常數值 (一除外)。 因為結果運算式一律會評估為 true,所以未評估邏輯 OR 運算的右邊。 這就是所謂的「最少運算評估」。

非零常數值 (一以外的值) 表示已故意使用位元 AND 運算子 (&)。 當非零的常數為 1 時,並不會針對慣用語產生這則警告,因為可使用它選擇性地啟用程式碼路徑,但是如果非零的常數評估為 1 (例如 1+0) 時,則會產生這項警告。

範例

下列程式碼會因為 INPUT_TYPE 是 2,而產生這則警告:

#define INPUT_TYPE 2
void f(int n)
{
   if(INPUT_TYPE || n) //warning 6235 issued
   {
      puts("Always gets here");
   }
   else
   {
      puts("Never gets here");
   }
}

下列程式碼會使用位元 AND (&) 運算子,更正這則警告:

#define INPUT_TYPE 2
void f(int n)
{
   if((INPUT_TYPE & n) == 2)
   {
      puts("bitwise-AND comparison true");
   }
   else
   {
      puts("bitwise-AND comparison false");
   }
}

請參閱

參考

C Logical Operators