ある機械、sizeof(char)!= 1、または少なくともCHAR_BIT>8?
質問
ある機械(コンパイラ) sizeof(char) != 1
?
は C99標準 という sizeof(char)
標準的なコンプライアンスの実践の書式を遵守して作成すること1?なお、私の部数と被引用数.
更新:
しなければならない機械(CPU、できないアドレスバイト(最小限で読み込まれる4バイト整列が4-sのバイトuint32_t
), でコンパイラ機能の定義 sizeof(char)
4?sizeof(char)
1、char32ビット (CHAR_BIT
マクロ)
Update2: がsizeof結果ではないバイト!このサイズの文字に置き換わります。Charできる2バイト、または(き)7ビット?
Update3:
Ok。すべての機械 sizeof(char) == 1
.その機械 CHAR_BIT > 8
?
解決
そして度々取り上げられている、C99部6.5.3.4:
適用される場合には、オペランドが は、char型unsigned charまたは署名 char、または適格版) その結果、1.
編集:ないご質問ですが、金利からHarbison、チ3rd ed.(事前c99)p.148:
保管ユニットとなっているときは、最 容量を占める 文字;サイズのオブジェクト タイプ
char
その1.
編集:答えられるご質問を更新し、以下の質問と解答からHarbisonとィは同Ex.4Ch.6):
で許容してC 実施するタイプ
char
ができ 代表値であることがわか -2,147,483,648を2,147,483,647?その場合、そのsizeof(char)
下にその実装?う の最小と最大の範囲 タイプint
?
回答(ibid,p.382):
許される場合は浪費) 実装用の32ビット 表示タイプ
char
.に関わらず この実装では、価値のsizeof(char)
は常に1です。
こない具体的にはアドレスの場合、バイトは8ビット char
4つのバイト(ことは、事実上不可能では、c99の定義は、以下のとおり sizeof(char) = 1
することがありますが、明らかc99標準Harbison、Ntc.
編集:実際(これはおupd2)、c99関 sizeof(char)
は バイトから部6.5.3.4してもらうことを目的として
のsizeofオペレーターの収穫量のサイズ (バイト単位)、そのオペランド
での引用、バイトは8ビット char
どの4つのバイトが不可能なのためのc99バイトと同じ char
.
お答えいの可能性は7ビット char
:はありませんのでc99.による部5.2.4.2.1の標準の 最小 8:
その実装で定義された値に等しくなければならな 以上 "私の重点】大きさを示し、同一ます。
—ビット数最小のオブジェクトではないビットフィールド(バイト)
**CHAR_BIT 8**
—最小値のオブジェクトタイプsigned char
**SCHAR_MIN -127//−(27−1)**
—最大値型のオブジェクトsigned char
**SCHAR_MAX +127//27−1**
—最大値型のオブジェクトを符号なしchar
**UCHAR_MAX 255//28−1**
—最小値は、char型のオブジェクト
**CHAR_MIN** see below
—最大値は、char型のオブジェクト
**CHAR_MAX** see below
[...]
場の価値は、char型のオブジェクト として符号付き整数の場合 使用される表現の値 CHAR_MINは同じでなければならなし SCHAR_MINの値CHAR_MAX は同じでなければならなし SCHAR_MAX.それ以外の場合、値の CHAR_MINは0の値 CHAR_MAXは同じでなければならなし UCHAR_MAX.の価値UCHAR_MAX は、等しい2^CHAR_BIT−1に示します。
他のヒント
ありませんが機械 sizeof(char)
4.では常に1バイトになります。そのバイトを含む32ビットがどのCコンパイラでは、バイトです。詳しくはいう点を C++FAQ26.6.このリンクをカバーでも、私はかなりあるC++ったすべてのルールでかなり満足できるパイでした。で説明する必要がありますので comp.lang.c FAQ8.10 キャラクターより8ビット.
Upd2:がsizeof結果ではないバイト !このサイズの文字に置き換わります。Charで 2バイト、または(き)7ビット?
そう、ここはバイトです。しお話しましょう設定することができます。 sizeof(char)
1バイトによるCコンパイラです。俗に言う呼バイト(8ビット)と同じとは限らないか、Cコンパイラを呼び出バイトになります。ビット数のCバイトによって異な機械です。でも保証される少なくとも8.
PDP-10 やPDP-11 しました。
更新: あのようなC99のコンパイラのためのPDP-10.
一部のモデルのアナログデバイスの32ビットSHARC DSPてCHAR_BIT=32、 TiのDSPからTMS32F28xxてCHAR_BIT=16日 と伝えられ.
更新:はありま GCC3.2PDP用-10 とCHAR_BIT=9 (チェックインするようになります。hこのアーカイブ).