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