答えて
技術的には、いいえ、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言語のchar変数の値
- 2. C言語で囲む型にtypedef
- 3. C言語のbitwise opsによる範囲別クローンのクローン
- 4. 言語間のUnicode範囲マッピング
- 5. Bootstrap DateRangePicker言語の範囲設定
- 6. ロータスノート式言語の日付範囲
- 7. Cのプリミティブデータ型の範囲は?
- 8. 配列からC言語の別の配列への要素のコピー範囲
- 9. datetimeデータ型にcharデータ型の変換は、範囲外の日時value.sqlに
- 10. Cのchar型
- 11. 型宣言エラー:[Char]と[[Char]]
- 12. C言語のシェルからグローバルCHAR配列を宣言
- 13. C言語の中での参照型
- 14. クリスタルCバインディング:戻り値の型はchar *
- 15. charデータ型からdatetimeデータ型への変換は、範囲外日時の値になりました
- 16. c言語のデータ型算術規則
- 17. ヘブライ語アルファベットのPHP範囲
- 18. C言語の2つのchar配列の内容を比較
- 19. vba範囲オフセット範囲の相対値
- 20. 日付範囲のファイルタイプを一覧表示するアーティファクトクエリ言語
- 21. クラスの型テンプレート引数の範囲の範囲
- 22. 方法のchar [] = ARR "OX | - " C言語での作品
- 23. C言語のchar配列の内容を確認
- 24. 範囲内では、すべての宣言はコンパイル後の関数の先頭(C言語)で行われますか?範囲内
- 25. C++シンボルの範囲
- 26. char配列をすべて0の値に設定します(C言語)
- 27. C言語でchar配列をint型2d配列に変換する
- 28. C言語の端末入力からcharポインタを格納
- 29. C言語のchar配列を使ったバスエラー
- 30. uint8_t *からC言語のchar *に変換
なぜあなたはとにかく、 'char'を使用するようにしたいですか? 'short int'は2バイトを与え、小さなスペースに1000を簡単に格納するつもりはありません。 – geoffspear