質問: 下記のif文について、警告がでる様です。 この警告(comparison is always false)の意味が不明です。 ご説明頂けますと大変助かります。 main.cpp:75:21: warning: comparison is always false due to limited range of data type [-Wtype-limits] if(bufR[i]==0xC0 || true){
回答: こんにちは。 恐らく、bufR[i]はchar型ですね? コンパイラがgccやVC++でしたらchar型はsignedです。その場合、char型が取りうる値は-128~127です。 それに対して0xC0は192です。-128~127の範囲外なので`bufR[i] == 0xC0`という比較は常にfalseになると警告してくれているのです。 【追記】 対策は、bufR[i]をunsigned char型で定義できるならそれが好ましいです。 ただ、bufRを渡す他のAPI等で型違いエラーが多発する場合があります。そんな場合は、下記のように定義することも考えられます。 > > static const char foo_const=static_cast(0xc0); > > if (bufR[i] == foo_const) > > >