共用方式為


C6286

更新:2007 年 11 月

警告 C6286: (<非零常數> || <運算式>) 永遠是非零的常數。<運算式> 不會加以評估且可能有副作用

這個警告表示在邏輯 OR 運算的左邊偵測到非零常數,而這個運算是發生在測試內容中。結果運算式一定會評估成 TRUE。此外,運算式的右邊似乎有副作用 (Side Effect),且會遺失它們。

這個警告表示可能需要小心地檢查運算式的右邊,以確定不會遺失適當功能所需的任何副作用。

(!0 || <expression>) 建構常用於強制執行所控制的區塊。

範例

下列程式碼將產生出這個警告:

#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1 

int test();

void f()
{
  if (INPUT_TYPE || test()) 
  {
    puts("INPUT_TYPE == 1, expression not evaluated");
    // code...
  }
  else
  {
    puts("INPUT_TYPE == 0. Call to test() returned 0");
    // code...
  }
}

下列程式碼將 if 陳述式 (Statement) 分成兩個不同的組件,以顯示一個可能的方案:

#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1 

int test();

void f()
{
  int i;
  if (INPUT_TYPE) 
  {
    i = test();
    // code...
  }
  else
  {
    puts("INPUT_TYPE false");
    // code...
  }
}

請參閱

參考

Logical OR Operator: ||

編譯器警告 (層級 4) C4127