建議使用 Visual Studio 2017

C6235

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

警告 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 邏輯運算子

顯示: