繁体   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