以下の各定義の基になるオブジェクト表現 (ビット パターン) は同じであると言うのは正しいでしょうか?
char c = 240;
unsigned char c = 240;
signed char c = 240;
では、符号付きc
であることは、 が式 (またはキャスト) で使用される場合にのみ問題になりますか?
以下の各定義の基になるオブジェクト表現 (ビット パターン) は同じであると言うのは正しいでしょうか?
char c = 240;
unsigned char c = 240;
signed char c = 240;
では、符号付きc
であることは、 が式 (またはキャスト) で使用される場合にのみ問題になりますか?
signed char
一般に、 の範囲がをカバーしない場合、パターンが同じであると言うのは正しくありません240
。が範囲外の場合240
、このオーバーフローした初期化の結果は実装定義です (シグナルが発生する場合があります。6.3.1.3/3 を参照してください)。char
署名されている場合は、初期化にも同じことが当てはまります。
signed char
言語は、との範囲の共通部分についてのみ表現の一致を保証しunsigned char
ます。たとえば、これは同じパターンを生成することが保証されています
char c = 10;
unsigned char c = 10;
signed char c = 10;
一般的に240
はそのような保証はありません(範囲外であると仮定して)。