私は次の文脈で「キャラクタセット」が意味するものは何かを考えていましたか?この文脈では「文字セット」とは何ですか?
C、覚え、 に使用されるサイズを表すために用語のバイトをシステムの文字セットを保持するので、Cのバイトは8ビット、9ビット、16ビット、またはいくつかの他の値とすることができた使用。
ありがとうございます。
私は次の文脈で「キャラクタセット」が意味するものは何かを考えていましたか?この文脈では「文字セット」とは何ですか?
C、覚え、 に使用されるサイズを表すために用語のバイトをシステムの文字セットを保持するので、Cのバイトは8ビット、9ビット、16ビット、またはいくつかの他の値とすることができた使用。
ありがとうございます。
引用には、用語の理解が不十分です。 「文字セット」は文字の集まりです。むしろ、Cで理解されるバイトは、実装定義の基本文字セットの文字を含むのに十分な大きさに定義されています。通常、「バイト」(Cの文脈で)とchar
は同義語です。
バイトは、一般的な意味で、データ格納の最小単位です。そのサイズは、あなたが話しているプラットフォームやプロセッサに依存します。多くのシステムでは、1バイトのサイズは8ビットです(単位は「オクテット」とも呼ばれます)。これが「バイト」が「オクテット」を意味するためによく使われる理由です。一般的な意味では、「バイト」はテキストエンコーディングに基づいて定義されていません。
一方、Cでは、バイトは、テキストエンコーディングに基づいて定義されたです。どのようなバイトは、実行環境の基本文字セットの任意のメンバーを保持するのに十分な大規模なデータストレージの
アドレス指定可能なユニットとしてsection 3.5 of N1570(最終C11案)で定義されるCの文脈でです
これは、タイプchar
と等価であると一般に理解されています。 6.2.5節3](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#page=40)言う:
タイプ
char
として宣言されたオブジェクトが基本実行文字セットの任意のメンバーを格納するのに十分な大きさです。基本実行文字セットのメンバがchar
オブジェクトに格納されている場合、その値は非負であることが保証されます。
(これは、しかし、明示的にchar
はCバイトと同じものであることを言っていません。CHAR_BIT
は少なくとも8
で、char
かどうかが署名されているので、また、char
は、少なくとも、8ビットでなければなりません。または実装に依存しない)
Cは、実装の基本的な文字の区別がを設定し、その拡張文字がを設定します。これらは、section 5.2.1で定義されています。 Cには "システムの文字セット"という名前のものはありません。基本文字セット、少なくとも以下の文字を含める必要があります。
!
、"
、#
)としてCで使用されている文字(、および'\0'
など、いくつかの制御文字は()これは真実の半分に過ぎません。 Cは「ソース文字セット」と「実行文字セット」を区別します。これは、基本的なソース文字セット、または基本実行文字セットによって定義されたバイトのCの考えですか?私は、標準ドラフトでその質問に対する答えを見つけられませんでした。
これは、そのマシンで使用されている文字のリストを意味します。たとえば、すべてのラテン文字(A〜Z)、数字(0〜9)、およびカッコのような記号、かっこなどです。我々は主に7ビットのASCIIを使用しますが、charは少なくとも8ビット長です。たとえば、ローカルマシンの文字セットがUCSの場合、バイトはASCIIよりはるかに大きなセットであるため、16ビットになります。 – paulotorrens
バイトは、1文字を保持できるタイプであり、何もセットではありません。バイトが潜在的に保持できるすべての文字がシステムの文字セットを形成します。 –
私は理解しています。あなたのおかげです。 –