[1796] Re:char hoge = 'A';
投稿者:yuya
2012/02/27 12:37:08
すみません、たぶん自己解決しました。
JIS X3010:2003 6.4.4.4 文字定数
|
|意味規則 単純文字定数は、型intをもつ。
|(中略)
|単純文字定数が単一の文字又は逆斜線表記を含む場合、その値はその単一の文字又は逆斜線表記の値をもつ
|char型のオブジェクトをint型に変換したときの結果の値とする。
|(中略)
|例2. 整数に対し2の補数表現を用い、型charをもつオブジェクトに対して8ビットを用いる処理系を考える。
|型charがsigned charと同じ範囲の値をもつ処理系では、単純文字定数'\xFF'は値-1をもつ。型charが
|unsigned charと同じ範囲の値をもつ場合、'\xFF'は値+255をもつ。
この例2を見ると、文字定数の値が、「charがsignedかunsignedか」に連動して定まることになりますね。つまり、int型のモノが「char型に対する扱い」に依存するんですね。知りませんでした。
ということは、無印のcharがsignedの処理系であろうとunsignedの処理系であろうと、文字定数を代入して値が変わってしまう心配はない、と。
一番気になっていたのは、「等しいはずの文字を比較したのに『等しくない』と判定されてしまうかも」ということだったのですが、これで心配はなくなりました。
# でもEOFとかち合ったりしないのかなぁ……