2016-11-06 18 views
1

私は次の文脈で「キャラクタセット」が意味するものは何かを考えていましたか?この文脈では「文字セット」とは何ですか?

C、覚え、 に使用されるサイズを表すために用語のバイトをシステムの文字セットを保持するので、Cのバイトは8ビット、9ビット、16ビット、またはいくつかの他の値とすることができた使用。

ありがとうございます。

+1

これは、そのマシンで使用されている文字のリストを意味します。たとえば、すべてのラテン文字(A〜Z)、数字(0〜9)、およびカッコのような記号、かっこなどです。我々は主に7ビットのASCIIを使用しますが、charは少なくとも8ビット長です。たとえば、ローカルマシンの文字セットがUCSの場合、バイトはASCIIよりはるかに大きなセットであるため、16ビットになります。 – paulotorrens

+1

バイトは、1文字を保持できるタイプであり、何もセットではありません。バイトが潜在的に保持できるすべての文字がシステムの文字セットを形成します。 –

+0

私は理解しています。あなたのおかげです。 –

答えて

2

引用には、用語の理解が不十分です。 「文字セット」は文字の集まりです。むしろ、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には "システムの文字セット"という名前のものはありません。基本文字セット、少なくとも以下の文字を含める必要があります。

  • (発音区別符号なし、英語で使用されるような)「ラテンアルファベット」のすべての大文字と小文字、
  • (アラビア語)小数点以下の桁(など29グラフィックなど!"#)としてCで使用されている文字(、および
  • なスペースや'\0'など、いくつかの制御文字は()
  • 、)英語で書かれました。

これは真実の半分に過ぎません。 Cは「ソース文字セット」と「実行文字セット」を区別します。これは、基本的なソース文字セット、または基本実行文字セットによって定義されたバイトのCの考えですか?私は、標準ドラフトでその質問に対する答えを見つけられませんでした。

関連する問題