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...
}
}