簡體   English   中英

警告C4127:條件命令在cl命令中為常量

[英]warning C4127: conditional expression is constant in cl command

#define Val_MAX 0
int main() {
   if(Val_MAX)
      printf("The value is %d",VALUE_MAX);
   return 0;
}

當我嘗試編譯上述程序時, if(VALUE_MAX)顯示警告

條件表達式是常量。

如何解決以上警告?

在您的代碼中, Val_MAX#define d值,為0

if(Val_MAX)

實際上(您可以在使用gcc -E進行預處理后進行檢查)

if(0)

這沒有任何價值。 以下printf()將永遠不會執行。

FWIW,一個選擇語句,例如if需要一個表達式, 預計將在運行時對其進行值評估。 對於固定值,選擇語句沒有任何意義。 它最有可能最終成為“始終為真”或“始終為假”情況。

一種可能的解決方案: [使用選擇語句的一些實際用法]

Val_MAX為變量,要求用戶輸入該值,然后使用它。 偽代碼看起來像

#include <stdio.h>

int main(void) 
{
   int Val_MAX = 0;

   printf("Enter the value of Val_MAX\n");
   scanf("%d", &Val_MAX);

   if(Val_MAX)
      printf("The value is %d",VALUE_MAX);

   return 0;
}

您的preprocessor directiveVAL_MAX替換為0它變為

if(0)

因此無論如何總會是假的,並且您的printf將不會執行,因此if條件沒有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM