プログラムに1つのWORD変数があります。
WORD hour;
しかし、私がそれを比較すると
if(hour>=0 && hour<=18)
{
hour+=6;
}
警告が生成されます [警告]データ型の範囲が限られているため、比較は常にtrueです
IDEとしてDev-C++を使用しています。
プログラムに1つのWORD変数があります。
WORD hour;
しかし、私がそれを比較すると
if(hour>=0 && hour<=18)
{
hour+=6;
}
警告が生成されます [警告]データ型の範囲が限られているため、比較は常にtrueです
IDEとしてDev-C++を使用しています。
if(hour>=0 && hour<=18)
警告は、 (通常)の typedef である型の ishour >=0
に対して常に true で ある比較に対するものだと思います。これは、常に より大きいか等しいことを意味します。hour
WORD
unsigned short
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. であるか であるかは問題ではないことに注意してくださいunsigned short
。である限りunsigned
、hour >=0
のすべての可能な値に対して真になりますhour
。
整数型としてどこかに -edされてWORD
いるようで、常に正の数 ( ) になります。したがって、最初の比較は常に真です。typedef
unsigned
>=0
WORD のデータ型に応じて (提供していないため、unsigned short であると想定します)、unsigned short には負の整数が収まらないため、最初の比較は常に true になります。したがって、コンパイラは、最初の比較は多かれ少なかれ無意味だと言いました。