2017-03-06 14 views
2

を設定すると言うされていますマシンの基本的な性格は、ビルトインタイプのセクション原始的で、C++プライマー帳で

charは、マシンの基本的な文字の文字に対応する数値を保持するのに十分な大きさであることが保証されセット。つまり、charは1つのマシンバイトと同じサイズです。

この基本文字はASCIIテーブルを参照していますか?

+2

場合がございます。 ASCIIである必要はありません。 EBCDICのような他のセットがあります – NathanOliver

+3

現代のほとんどのコンピュータでは、そうです。他のコンピュータで利用可能な他のキャラクタセットがありますが、ますます希少で特殊化しています。 – abelenky

+1

"マシンの基本文字セット"は実際には何も意味しません。これは、C++コンパイラ/ライブラリのベンダーの責任です。読んで、「ソースキャラクタセット」と「実行キャラクタセット」の用語を調べてください。 –

答えて

2

標準では、基本文字セットがASCIIであることを保証しません。実際、EBCDICのような特定のシステム上には他の文字セットが存在し、依然として存在しています。

のみ保証は

1.7であるC++メモリモデル[intro.memory] ​​
1 C++メモリモデルにおける基本的なストレージユニットがバイトです。バイトは少なくとも の基本実行文字セット(2.3)のメンバーとUnicode UTF-エンコーディングフォームの8ビットコードユニットを格納するのに十分な大きさであり、ビットの連続シーケンス、実装されています。 最下位ビットは下位ビットと呼ばれます。最上位ビットは上位ビット ビットと呼ばれます。 C++プログラムで使用できるメモリは、1つまたは複数の連続したバイト列から構成されています。すべての バイトには一意のアドレスがあります。

1.8 C++オブジェクトモデル[intro.object]
...
5がビットフィールド(9.6)である場合を除き、ほとんどの派生オブジェクトが非ゼロの大きさを有するものと1つ以上の を占有しなければなりませんストレージのバイト。

2.3文字セット[lex.charset]
...上記の の上の0の後の各文字の値は、前の値より1大きい値になります。

したがって、C++標準では、charが少なくとも8ビットを持ち、数字コードが連続する値を持つことが保証されています。他のすべての文字セットのプロパティは、実装に依存します。

+0

マイナー解説:§1.7¶1は、バイトが少なくとも8ビットであることを保証します。 §1.8¶5は、「最も派生したオブジェクト」が少なくとも1バイトを占めることを保証する。 また、非クラス型( 'char'など)のオブジェクトが「最も派生したオブジェクト」の定義に含まれているという§1.8¶4も関連しています。 私は§2.3しかし関連性があるかどうかはわかりません。 – knatten

関連する問題