我的程序中有一個WORD變量。數據比較的C++警告
WORD hour;
但是,當我比較它
if(hour>=0 && hour<=18)
{
hour+=6;
}
它將產生警告 [警告]比較永遠爲真,由於數據類型範圍限制
我使用開發 - C++在旁邊。
我的程序中有一個WORD變量。數據比較的C++警告
WORD hour;
但是,當我比較它
if(hour>=0 && hour<=18)
{
hour+=6;
}
它將產生警告 [警告]比較永遠爲真,由於數據類型範圍限制
我使用開發 - C++在旁邊。
if(hour>=0 && hour<=18)
我認爲該警告是用於比較hour >=0
這始終是爲hour
真正是WORD
類型這是unsigned short
(通常)一個typedef這意味着hour
總是大於或等於0
的:
typedef unsigned short WORD;
在MSVC++上,它是如何定義WORD的,檢查你的編譯器是否爲unsigned
。如果它unsigned
,那麼hour >=0
明顯是true
對於所有可能的值爲hour
。在這種情況下,你只是需要這樣寫:
if(hour<=18) //(hour >= 0) is implied by its type
{
hour+=6;
}
1.注意不要緊是否unsigned int
或unsigned short
。只要是unsigned
,hour >=0
對於hour
的所有可能值都將爲真。
取決於WORD數據類型是什麼(因爲您沒有提供它,所以我認爲它是無符號短),第一次比較始終爲真,因爲沒有負整數適合無符號短整數。所以編譯器告訴你,第一個比較或多或少是毫無意義的。
看起來WORD
是typedef
- 某處爲unsigned
整數類型,所以它總是正數(>=0
)。所以第一個比較總是如此。