我的程序中有一个WORD变量。
WORD hour;
但是当我比较它时
if(hour>=0 && hour<=18)
{
hour+=6;
}
它将生成警告[警告] 由于数据类型范围有限,比较始终为真
我正在使用Dev-C++作为IDE。
if(hour>=0 && hour<=18)
我认为警告是为了比较hour >=0
对于hour
类型WORD
总是正确的,这是 typedef 的 unsigned short
(通常),这意味着hour
总是大于或等于 0
:
typedef unsigned short WORD;
在MSVC++上,这是WORD的定义方式,请检查编译器是否unsigned
。如果它unsigned
1,那么对于 hour
的所有可能值,显然hour >=0
true
。在这种情况下,您需要编写以下内容:
if(hour<=18) //(hour >= 0) is implied by its type
{
hour+=6;
}
1.请注意,无论是unsigned int
还是unsigned short
都无关紧要。只要它是unsigned
的,hour >=0
对于hour
的所有可能值都是真的。
WORD
在某处typedef
-ed unsigned
整数类型,因此它将始终为正数(>=0
)。所以第一个比较总是正确的。
根据 WORD 的数据类型(因为你没有提供它,我假设它是无符号短的),第一次比较总是正确的,因为无符号短整型中没有负整数。所以编译器告诉你,第一次比较或多或少是没有意义的。