C Language
数字、文字、文字列のリテラル
サーチ…
備考
リテラルという用語は、数値(例えば0
)や文字列(例えば"C"
)などの定数値を指定するCコードの文字列を記述するためによく使用されます。厳密に言えば、標準では、文字列リテラルの「リテラル」用語を予約し、整数定数、浮動小数点定数、列挙定数と文字定数の長期定数を使用しますが、これは一般的な使い方ではありません。
リテラルは、デフォルトの型またはその表現を変更するリテラルを開始または終了できる余分な文字である接頭辞または接尾辞 (両方ではない)を持つことができます。
整数リテラル
整数リテラルは整数値を提供するために使用されます。接頭辞で示される3つの数値ベースがサポートされています。
ベース | 接頭辞 | 例 |
---|---|---|
小数 | 無し | 5 |
オクタル | 0 | 0345 |
16進数 | 0x または0X | 0x12AB 、 0X12AB 、 0x12ab 、 0x12Ab |
この記述には符号が含まれていないので、整数リテラルは常に正であることに注意してください。 -1
ようなものは、1つの整数リテラル( 1
)を持つ式として扱われ、a -
10進整数リテラルの型は、 int
およびlong
値に適合する最初のデータ型です。 C99以降、非常に長いリテラルでもlong long
がサポートされています。
8進または16進整数リテラルの型は、 int
、 unsigned
、 long
およびunsigned long
の値に適合する最初のデータ型です。 C99以降、非常に大きなリテラルではlong long
とunsigned long long
もサポートされています。
さまざまな接尾辞を使用して、リテラルのデフォルトの型を変更することができます。
サフィックス | 説明 |
---|---|
L 、 l | long int |
LL 、 ll (C99以降) | long long int |
U 、 u | unsigned |
UとL / LL接尾辞は、任意の順序で組み合わせることができます。異なるケースがあっても、接尾辞を二重にすることは誤りです(例えば、2つのU
接尾辞を付けるなど)。
文字列リテラル
文字列のリテラルは、文字の配列を指定するために使用されます。それらは二重引用符で囲まれた文字の並びです(例えば、 "abcd"
、 char*
型)。
L
接頭辞は、リテラルをwchar_t*
型のワイド文字配列にします。たとえば、 L"abcd"
ます。
C11以降、 L
に似た他の符号化接頭辞があります。
プレフィックス | ベースタイプ | エンコーディング |
---|---|---|
無し | char | プラットフォームに依存する |
L | wchar_t | プラットフォームに依存する |
u8 | char | UTF-8 |
u | char16_t | 通常はUTF-16 |
U | char32_t | 通常はUTF-32 |
後者の2つについては、エンコーディングが実質的に対応するUTFエンコーディングである場合、機能テストマクロを使用してクエリを実行できます。
浮動小数点リテラル
浮動小数点リテラルは、符号付き実数を表すために使用されます。リテラルの型を指定するには、次の接尾辞を使用できます。
サフィックス | タイプ | 例 |
---|---|---|
無し | double | 3.1415926 -3E6 |
f 、 F | float | 3.1415926f 2.1E-6F |
l 、 L | long double | 3.1415926L 1E126L |
これらの接尾辞を使用するには、リテラルは浮動小数点リテラルでなければなりません 。例えば、 3f
ので、エラーである3
ながら、整数リテラルである3.f
又は3.0f
正しいです。 long double
場合、可読性のために常に大文字のL
を使用することをお勧めします。
文字リテラル
文字リテラルは、1文字を表すために使用される特別な型の整数リテラルです。それらは一重引用符で囲まれています(例: 'a'
。 int
型です。リテラルの値は、マシンの文字セットに応じた整数値です。彼らは接尾辞を許さない。
文字リテラルの前にあるL
接頭辞は、 wchar_t
型のワイド文字にします。同様に、C11のu
とU
接頭辞はchar16_t
型とchar32_t
型のワイド文字になります。
特定の特殊文字(例えば、非印字文字)を表現しようとする場合、エスケープシーケンスが使用されます。エスケープシーケンスは、別の文字に変換された一連の文字を使用します。すべてのエスケープシーケンスは2つ以上の文字で構成され、最初はバックスラッシュ\
です。バックスラッシュの直後にある文字は、シーケンスがどの文字リテラルとして解釈されるかを決定します。
エスケープシーケンス | 表現された文字 |
---|---|
\b | バックスペース |
\f | フォームフィード |
\n | 改行(改行) |
\r | キャリッジリターン |
\t | 水平タブ |
\v | 垂直タブ |
\\ | バックスラッシュ |
\' | 一重引用符 |
\" | 二重引用符 |
\? | 疑問符 |
\nnn | 8進値 |
\xnn ... | 16進値 |
エスケープシーケンス | 表現された文字 |
---|---|
\a | アラート(ビープ音、ベル) |
エスケープシーケンス | 表現された文字 |
---|---|
\unnnn | ユニバーサルキャラクターネーム |
\Unnnnnnnn | ユニバーサルキャラクターネーム |
ユニバーサル文字名は、Unicodeコードポイントです。普遍的な文字の名前は、複数の文字にマップすることができます。数字n
は16進数字として解釈されます。使用中のUTFエンコーディングに応じて、ユニバーサル文字の名前シーケンスは、単一の通常のchar
文字ではなく、複数の文字で構成されるコードポイントになります。
改行文字エスケープシーケンスをテキストモード入出力で使用すると、OS固有の改行バイトまたはバイトシーケンスに変換されます。
疑問符のエスケープシーケンスは、 三文字を避けるために使用されます 。たとえば、 ??/
はバックスラッシュ文字'\'
表す三角形としてコンパイルされますが、 ?\?/
を使用すると文字列 "??/"
ます。
8進数のエスケープシーケンスには、1つ、2つまたは3つの8進数n
があります。