2

以下の各定義の基になるオブジェクト表現 (ビット パターン) は同じであると言うのは正しいでしょうか?

char c = 240;
unsigned char c = 240;
signed char c = 240;

では、符号付きcであることは、 が式 (またはキャスト) で使用される場合にのみ問題になりますか?

4

1 に答える 1

2

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はそのような保証はありません(範囲外であると仮定して)。

于 2012-11-30T07:57:39.047 に答える