マシン(またはコンパイラ)はどこにありsizeof(char) != 1
ますか?
DOES C99標準では、と言っているsizeof(char)
標準準拠の実装に正確に1でなければなりませんか?ある場合は、セクション番号と引用を教えてください。
更新:
バイト(最小読み取りは4バイト、アラインメント済み)をアドレス指定できないマシン(CPU)があるが、バイトの4秒(uint32_t
)のみの場合、このマシンのコンパイラーは sizeof(char)
4に定義できますか?sizeof(char)
1になりますが、charは32ビット(CHAR_BIT
マクロ)になります
Update2: しかし、sizeof結果はバイトではありません!CHARのサイズです。そしてcharは2バイト、または(多分)7ビットにすることができますか?
Update3:わかりました
。すべてのマシンが持っていsizeof(char) == 1
ます。しかし、どのマシンにありCHAR_BIT > 8
ますか?
char
(ではなくwchar
)として使用する非標準のコンパイラが登場する可能性があります。標準sizeof(char)
で1 とする必要があると記載されていても、その仮定に依存しません。
sizeof(char)
charが32ビットであっても、常に1です(システムによっては)。Cには楽しいいぼがたくさんあります。
sizeof(char) == sizeof(short) && sizeof(char) == sizeof(int)
それらについて; sizeof(int) == sizeof(long)
CHAR_BITが32であったか64であったかを覚えていません。32だったと思いsizeof(long) == 1
ますし、私もそう思います。 (Cray Cマニュアルへの参照を見つけることはできますが、オンラインアクセスはできません)