答えて
技術的には、いいえ、char
タイプには2バイト以上の値を格納できません。 Cでは、char
とバイトは同じサイズですが、必ずしも8ビットに限定されません。多くの標準化団体は、正確に8ビットの値に「オクテット」という用語を使用する傾向があります。
あなたは(メモリから)limits.h
内部で見れば、あなたはこれが、その後、はい、それ缶十分に大きければ、実際に、char
のために使用され、どのように多くのビットを告げる(とりわけ)CHAR_BIT
記号が表示されます値を格納します。
しかし、事実上すべてのデスクトップでは、文字はちょうど8ビットの大きさであり、コード内で通常とは異なるバイトサイズの可能性を考慮するとおそらく過剰です。 – user168715
@ user168715:私たちの中には、事実上すべてのデスクトップのセットよりも大きなユニバースで働く人もいます:-) – paxdiablo
@ user168715:私はそれをサポートするためにどれだけの努力を払うのかという問題だと思います。 '8'ではなく' CHAR_BIT'と打ち込むだけであれば、私はそれを行います。異なるサイズのサポートバイトが実際にかなりの無駄な努力を払うならば、私は何とか(おそらくドキュメンテーションの中で)CHAR_BITが8でなければならないと主張し、私の人生に乗ります。 –
limits.h
を含め、CHAR_MAX
の値をチェックします。
おそらくありません。 C標準では、char
には少なくとも8ビットを格納できる必要があるため、char
に8ビット以上の値を移植することはできません。
(*今日最も一般的に使用されているシステムでは、文字は8ビットです)。
Cタイプに格納できる値の範囲はそのサイズによって異なり、Cで指定されていない値はアーキテクチャによって異なります。 char
タイプの最小値は8ビットです。また、一般的に(ほぼ普遍的に)その最大値もあります(limits.h
で確認できます)。 したがって、charでは、-128から127、または0から255(符号付きまたは符号なし)から格納できます。
Cのchar
の最小サイズは8ビットです。これは256を超える値を保持するのに十分ではありません。 は、ワード・アドレッサブル・アーキテクチャなどの特定のインプリメンテーションで幅が広いことがありますが、それに頼るべきではありません。
+1は、アドレス指定可能なアーキテクチャのようなものであることを思い出してください:-) –
文字の幅はシステムによって異なります。しかし、C99と合理的なものを使用していると仮定すると、intN_tとuintN_tという形式の型を定義するstdint.hヘッダーにアクセスする必要があります(N = 8,16,32,64)。これらは少なくともNビット幅であることが保証されています。だから、もしあなたが特定のビット数(システムにかかわらず)を持ったタイプを持つことを確かなものにしたいなら、それらはあなたが望む人です。
例:
#include <stdint.h>
uint32_t foo; /* Unsigned, 32 bits */
int16_t bar; /* Signed, 16 bits */
これらの型は、実装がそれらの仕様を満たす型を持っている場合にのみ必要です(これは、かなり可能性が高い)。たとえば、8ビットタイプがない場合、 'uint8_t'は存在しません。それらが存在する場合、「少なくとも」ではなく、Nビット幅で正確に保証されます。 "少なくとも"型は 'int_leastN_t'です。それを修正すれば、私はあなたに隆起を与えます:-) – paxdiablo
- 1. C言語で囲む型にtypedef
- 2. 言語間のUnicode範囲マッピング
- 3. Cのプリミティブデータ型の範囲は?
- 4. charデータ型からdatetimeデータ型への変換は、範囲外日時の値になりました
- 5. 型宣言エラー:[Char]と[[Char]]
- 6. Cのchar型
- 7. ヘブライ語アルファベットのPHP範囲
- 8. C++シンボルの範囲
- 9. 範囲内では、すべての宣言はコンパイル後の関数の先頭(C言語)で行われますか?範囲内
- 10. c言語のデータ型算術規則
- 11. array(C++)の値の範囲の最大値
- 12. char配列をすべて0の値に設定します(C言語)
- 13. C言語のchar配列の内容を確認
- 14. 別の範囲の値から範囲を定義する
- 15. DTD ATTLIST数値の範囲
- 16. Sql LIKE数値の範囲
- 17. 数値の範囲外
- 18. 16ビットデータ型の範囲での混乱
- 19. a + bとchar型の値
- 20. GREP数値範囲
- 21. C#IP範囲フィルタ
- 22. 日付範囲... C#
- 23. "charデータ型からdatetimeデータ型への変換は、範囲外です"原因は何ですか?
- 24. coutブーストの範囲:要素の範囲
- 25. svn diffの改訂範囲の範囲
- 26. #1264範囲外の値の修正?
- 27. 範囲の間の値を取得
- 28. 複数の数値範囲の順列
- 29. バッチ・ループの数値の範囲
- 30. C言語のイテレータ
なぜあなたはとにかく、 'char'を使用するようにしたいですか? 'short int'は2バイトを与え、小さなスペースに1000を簡単に格納するつもりはありません。 – geoffspear