名前空間
変種
操作

文字リテラル

提供: cppreference.com
< cpp‎ | language
 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (非推奨)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 
一般
値カテゴリ (lvalue, rvalue, xvalue)
評価順序 (副作用完了点)
定数式
未評価式
一次式
ラムダ式(C++11)
リテラル
整数リテラル
浮動小数点リテラル
ブーリアンリテラル
文字リテラル および エスケープシーケンス
文字列リテラル
ヌルポインタリテラル(C++11)
ユーザ定義リテラル(C++11)
演算子
代入演算子: a=b, a+=b, a-=b, a*=b, a/=b, a%=b, a&=b, a|=b, a^=b, a<<=b, a>>=b
インクリメントとデクリメント: ++a, --a, a++, a--
算術演算子: +a, -a, a+b, a-b, a*b, a/b, a%b, ~a, a&b, a|b, a^b, a<<b, a>>b
論理演算子: a||b, a&&b, !a
比較演算子: a==b, a!=b, a<b, a>b, a<=b, a>=b, a<=>b(C++20)
メンバアクセス演算子: a[b], *a, &a, a->b, a.b, a->*b, a.*b
その他の演算子: a(...), a,b, a?b:c
デフォルト比較(C++20)
演算子の代替表現
優先順位と結合性
畳み込み式(C++17)
new 式
delete 式
throw 式
alignof
sizeof
sizeof...(C++11)
typeid
noexcept(C++11)
演算子オーバーロード
変換
暗黙の変換
const_cast
static_cast
reinterpret_cast
dynamic_cast
明示的な変換 (T)a, T(a)
ユーザ定義変換
 

[編集] 構文

' c-char ' (1)
u8 ' c-char ' (2) (C++17およびそれ以降)
u ' c-char ' (3) (C++11およびそれ以降)
U ' c-char ' (4) (C++11およびそれ以降)
L ' c-char ' (5)
' c-char-sequence ' (6)

ただし

  • c-char は以下のいずれかです。
  • シングルクォート (')、バックスラッシュ (\)、改行文字を除いた、基本文字集合の文字。
  • エスケープシーケンス。 エスケープシーケンスを参照してください。
  • ユニバーサル文字名。 エスケープシーケンスを参照してください。
  • c-char-sequence は2つ以上の c-char の並びです。
1) ナロー文字リテラルまたは普通の文字リテラル。 'a''\n''\13' など。 これらのリテラルは char 型であり、実行文字集合の c-char の表現と等しい値を持ちます。 c-char が実行文字集合で1バイトで表現できない場合、そのリテラルは int 型となり、処理系定義の値を持ちます。
2) UTF-8 文字リテラル。 u8'a' など。 このようなリテラルは char 型であり、 c-char の ISO 10646 コードポイント値と等しい値を持ちます (そのコードポイント値がひとつの UTF-8 符号単位で表現可能であれば)。 c-char が基本ラテン文字または C0 制御文字 Unicode ブロックの文字でない場合、プログラムは ill-formed です。
3) UCS-2 文字リテラル。 u'貓' など。 しかし u'🍌' (u'\U0001f34c') などは含まれません。 このようなリテラルは char16_t 型であり、 Unicode の c-char の値と等しい値を持ちます (それが基本多言語面の文字であれば)。 c-char が基本多言語面の文字でない場合、プログラムは ill-formed です。
4) UCS-4 文字リテラル。 U'貓'U'🍌' など。 このようなリテラルは char32_t 型であり、 Unicode の c-char の値と等しい値を持ちます。
5) ワイド文字リテラル。 L'β'L'貓' など。 このようなリテラルは wchar_t 型であり、実行ワイド文字集合の c-char の値と等しい値を持ちます。 c-char が実行ワイド文字集合で表現できない場合 (wchar_t が16ビットである Windows で、基本多言語面以外の文字の場合など)、そのリテラルの値は処理系定義です。
6) マルチ文字リテラル。 'AB' など。 int 型であり、処理系定義の値を持ちます。

[編集] ノート

マルチ文字リテラルの多くの実装は、そのリテラル内のそれぞれの文字を結果の整数の連続するバイトを初期化するために使用します。 例えば、ビッグエンディアンでは、 '\1\2\3\4'0x01020304 になります。

C では、 'a''\n' などの文字定数は、 char ではなく int 型です。

[編集] 関連項目

文字定数C言語リファレンス