char に char リテラルを割り当てたいのですが、それは 255 や 13 などの特殊文字です。char
にキャストされるリテラル int を char に割り当てることができることchar a = 13;
も知っています。また、Microsoft が使用できることも知っています。char リテラルとしての16 進コード:char a = '\xd'
これを行う方法が gcc でもサポートされているかどうか知りたいです。
char に char リテラルを割り当てたいのですが、それは 255 や 13 などの特殊文字です。char
にキャストされるリテラル int を char に割り当てることができることchar a = 13;
も知っています。また、Microsoft が使用できることも知っています。char リテラルとしての16 進コード:char a = '\xd'
これを行う方法が gcc でもサポートされているかどうか知りたいです。
のようなものを書く
char ch = 13;
値があなたのプラットフォームと同じものであるプラットフォームにほとんど移植可能です(これは、ASCII文字セットを使用するすべてのシステムであり、実際には今日のほとんどのシステムです)。13
別の意味を持つプラットフォームがあるかもしれませ13
ん。ただし、'\r'
文字エンコーディング システムに関係なく、代わりに使用することは常に移植可能である必要があります。
同等の文字リテラルを持たない他の値を使用すると、移植できません。また、127 を超える値を使用すると、移植性がさらに低下します。これは、文字がシステムのロケール設定に依存する可能性があるASCII テーブルの外にあり、拡張 ASCII テーブルに入るからです。たとえば、西ヨーロッパと東ヨーロッパの言語設定では、128
toの255
範囲に異なる文字が含まれる可能性が高くなります。
文字ではなく一部のバイナリ データのみを含むことができるバイトを使用する場合は、 を使用する代わりに、char
たとえば をuint8_t
使用して、変数を文字ではなくバイナリ データに使用していることをコードの他の読者に伝えることができます。 .
16 進数のエスケープ シーケンスは、Microsoft に固有のものではありません。これは C/C++ の一部です: http://en.cppreference.com/w/cpp/language/escape
に 16 進数を割り当てることを意味します。char
これはクロスプラットフォーム コードです。
char a = '\xD';
質問は、10進数をに割り当てることをすでに示していchar
ます:
char a = 13;
また、エスケープ スイッチのみを使用して、8 進数を割り当てることもできます。
char a = '\023';
ちなみに、'\0'
ヌル文字を表すのは C/C++ では一般的です (プラットフォームに依存しません)。'\0'
エスケープできる特殊文字ではありません。これは、実際には 8 進数のエスケープ シーケンスを呼び出しています。