teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/04/20 02:14

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -2,4 +2,12 @@
2
2
 
3
3
  恐らく、bufR[i]はchar型ですね?
4
4
  コンパイラがgccやVC++でしたらchar型はsignedです。その場合、char型が取りうる値は-128~127です。
5
- それに対して0xC0は192です。-128~127の範囲外なので`bufR[i] == 0xC0`という比較は常にfalseになると警告してくれているのです。
5
+ それに対して0xC0は192です。-128~127の範囲外なので`bufR[i] == 0xC0`という比較は常にfalseになると警告してくれているのです。
6
+
7
+ ---
8
+ 【追記】
9
+ 対策は、bufR[i]をunsigned char型で定義できるならそれが好ましいです。
10
+ ただ、bufRを渡す他のAPI等で型違いエラーが多発する場合があります。そんな場合は、下記のように定義することも考えられます。
11
+
12
+ > static const char foo_const=static_cast<char>(0xc0);
13
+ > if (bufR[i] == foo_const)