プログラムに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 で ある比較に対するものだと思います。これは、常に より大きいか等しいことを意味します。hourWORDunsigned shorthour0
typedef unsigned short WORD;
MSVC++ では WORD がどのように定義されているかを確認してください。そうでunsignedない場合はコンパイラを確認してください。それがunsigned1の場合、hour >=0明らかtrueに のすべての可能な値ですhour。その場合、これだけを書く必要があります:
if(hour<=18) //(hour >= 0) is implied by its type
{
hour+=6;
}
unsigned int1. であるか であるかは問題ではないことに注意してくださいunsigned short。である限りunsigned、hour >=0のすべての可能な値に対して真になりますhour。
整数型としてどこかに -edされてWORDいるようで、常に正の数 ( ) になります。したがって、最初の比較は常に真です。typedefunsigned>=0
WORD のデータ型に応じて (提供していないため、unsigned short であると想定します)、unsigned short には負の整数が収まらないため、最初の比較は常に true になります。したがって、コンパイラは、最初の比較は多かれ少なかれ無意味だと言いました。