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

当我尝试编译上述程序时if(VALUE_MAX)显示警告

条件表达式是常数。

如何解决上述警告?

4

2 回答 2

2

在您的代码中,Val_MAX作为#defined 值0

if(Val_MAX)

实际上是(您可以在预处理后检查gcc -E

if(0)

这是没有任何价值的。以下printf()永远不会执行。

FWIW,像这样的选择语句需要if一个表达式,其值评估将在运行时完成。对于固定值,选择语句没有意义。它最有可能最终成为“始终正确”或“始终错误”的案例。

一种可能的解决方案: [通过选择语句的一些实际用法]

制作Val_MAXa 变量,要求用户输入该值,然后使用它。伪代码看起来像

#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;
}
于 2015-07-03T05:54:04.187 回答
0

你的preprocessor directive意志VAL_MAX0变成

if(0)

所以无论如何它总是错误的,你printf不会执行,所以if条件是没有用的

于 2015-07-03T05:55:54.957 回答