我的程序中有一个WORD变量。

WORD hour;


但是当我比较时

if(hour>=0 && hour<=18)
{
    hour+=6;
}


它将产生警告
[警告]比较总是正确的,因为数据类型范围有限

我正在使用Dev-C ++作为IDE。

最佳答案

if(hour>=0 && hour<=18)


我认为警告是针对比较hour >=0的,对于hour总是正确的,其类型为WORD,这是unsigned short的typedef(通常),这意味着hour始终大于或等于:

 typedef unsigned short WORD;


在MSVC ++上,是通过WORD定义方式的,请检查编译器是否为0。如果它是unsigned 1,那么对于unsigned的所有可能值,hour >=0显然是true。在这种情况下,您只需要编写以下代码:

if(hour<=18) //(hour >= 0) is implied by its type
{
    hour+=6;
}


1.请注意,hour还是unsigned int都没有关系。只要它是unsigned short,对于unsigned的所有可能值,hour >=0将为true。

关于c++ - C++数据比较警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11150642/

10-13 06:11