1

我有以下代码:

#define NUMBER_OF_ROOMS

if((unsigned int)(NUMBER_OF_ROOMS - 2) > 20)
{
   // do something here
}

但我收到一个 lint 警告:Warning 506: Constant value Boolean这是什么意思以及如何解决?

4

2 回答 2

6

这意味着表达式的值是恒定的,因此if没有意义,因为它在编译时就知道它是否为真。

你当然可以让它更加动态,或者使用预处理器来代替:

#if (NUMBER_OF_ROOMS - 2) > 20
// do something here
#endif

我认为强制转换(unsigned int)是没有意义的,如果这些确实是接近整数精度边界的值,那么 Jens Gustedt 的评论适用。

于 2013-06-14T13:55:23.647 回答
3

这意味着您的if语句的值在编译时是已知的。

编译器只看到if (30 - 2 > 20)(加上不需要的转换),它不需要在运行时评估。

于 2013-06-14T13:55:26.087 回答