[英]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 directive
將VAL_MAX
替換為0
它變為
if(0)
因此無論如何總會是假的,並且您的printf
將不會執行,因此if
條件沒有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.