サーチ…


備考

リテラルという用語は、数値(例えば0 )や文字列(例えば"C" )などの定数値を指定するCコードの文字列を記述するためによく使用されます。厳密に言えば、標準では、文字列リテラルの「リテラル」用語を予約し、整数定数、浮動小数点定数、列挙定数と文字定数の長期定数を使用しますが、これは一般的な使い方ではありません。

リテラルは、デフォルトの型またはその表現を変更するリテラルを開始または終了できる余分な文字である接頭辞または接尾辞 (両方ではない)を持つことができます。

整数リテラル

整数リテラルは整数値を提供するために使用されます。接頭辞で示される3つの数値ベースがサポートされています。

ベース接頭辞
小数無し 5
オクタル 0 0345
16進数 0xまたは0X 0x12AB0X12AB0x12ab0x12Ab

この記述には符号が含まれていないので、整数リテラルは常に正であることに注意してください。 -1ようなものは、1つの整数リテラル( 1 )を持つ式として扱われ、a -

10進整数リテラルの型は、 intおよびlong値に適合する最初のデータ型です。 C99以降、非常に長いリテラルでもlong longがサポートされています。

8進または16進整数リテラルの型は、 intunsignedlongおよびunsigned longの値に適合する最初のデータ型です。 C99以降、非常に大きなリテラルではlong longunsigned long longもサポートされています。

さまざまな接尾辞を使用して、リテラルのデフォルトの型を変更することができます。

サフィックス説明
Ll long int
LLll (C99以降) long long int
Uu 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
fF float 3.1415926f 2.1E-6F
lL long double 3.1415926L 1E126L

これらの接尾辞を使用するには、リテラル浮動小数点リテラルでなければなりません 。例えば、 3fので、エラーである3ながら、整数リテラルである3.f又は3.0f正しいです。 long double場合、可読性のために常に大文字のLを使用することをお勧めします。

文字リテラル

文字リテラルは、1文字を表すために使用される特別な型の整数リテラルです。それらは一重引用符で囲まれています(例: 'a'int型です。リテラルの値は、マシンの文字セットに応じた整数値です。彼らは接尾辞を許さない。

文字リテラルの前にあるL接頭辞は、 wchar_t型のワイド文字にします。同様に、C11のuU接頭辞はchar16_t型とchar32_t型のワイド文字になります。

特定の特殊文字(例えば、非印字文字)を表現しようとする場合、エスケープシーケンスが使用されます。エスケープシーケンスは、別の文字に変換された一連の文字を使用します。すべてのエスケープシーケンスは2つ以上の文字で構成され、最初はバックスラッシュ\です。バックスラッシュの直後にある文字は、シーケンスがどの文字リテラルとして解釈されるかを決定します。

エスケープシーケンス表現された文字
\b バックスペース
\f フォームフィード
\n 改行(改行)
\r キャリッジリターン
\t 水平タブ
\v 垂直タブ
\\ バックスラッシュ
\' 一重引用符
\" 二重引用符
\? 疑問符
\nnn 8進値
\xnn ... 16進値
C89
エスケープシーケンス表現された文字
\a アラート(ビープ音、ベル)
C99
エスケープシーケンス表現された文字
\unnnn ユニバーサルキャラクターネーム
\Unnnnnnnn ユニバーサルキャラクターネーム

ユニバーサル文字名は、Unicodeコードポイントです。普遍的な文字の名前は、複数の文字にマップすることができます。数字nは16進数字として解釈されます。使用中のUTFエンコーディングに応じて、ユニバーサル文字の名前シーケンスは、単一の通常のchar文字ではなく、複数の文字で構成されるコードポイントになります。

改行文字エスケープシーケンスをテキストモード入出力で使用すると、OS固有の改行バイトまたはバイトシーケンスに変換されます。

疑問符のエスケープシーケンスは、 三文字を避けるために使用されます 。たとえば、 ??/はバックスラッシュ文字'\'表す三角形としてコンパイルされますが、 ?\?/を使用すると文字列 "??/"ます。

8進数のエスケープシーケンスには、1つ、2つまたは3つの8進数nがあります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow