「3.10.4. 文字リテラル」の編集履歴(バックアップ)一覧に戻る

3.10.4. 文字リテラル - (2012/09/05 (水) 11:06:20) のソース

*[[3. 字句構造]]
**[[3.1. Unicode]]
**[[3.2. 字句変換]]
**[[3.3. Unicodeエスケープ]]
**[[3.4. 行終端子]]
**[[3.5. 入力要素とトークン]]
**[[3.6. 空白]]
**[[3.7. コメント]]
**[[3.8. 識別子]]
**[[3.9. キーワード]]
**[[3.10. リテラル]]
***[[3.10.1. 整数リテラル]]
***[[3.10.2. 浮動小数点リテラル]]
***[[3.10.3. ブールリテラル]]
***3.10.4. 文字リテラル
文字リテラル(character literal)はASCII一重引用符(シングルクォートまたはアポストロフィ、文字コードは&tt(){\u0027})で括られた1文字か1つの[[エスケープシーケンス>3.10.6. エスケープシーケンス]]です。

#divstyle(background-color:#f0f0f0;border:1px solid red;padding 4px){

&i(){CharacterLiteral}:
  &tt(){'} &i(){SingleCharacter} &tt(){'}
  &tt(){'} &i(){EscapeSequence} &tt(){'}

&i(){SingleCharacter}:
  &i(){InputCharacter} but not &tt(){'} or &tt(){\}

}

%i(){&small(){エスケープシーケンスの定義は[[3.10.6.>3.10.6. エスケープシーケンス]]を参照してください。}}

文字リテラルは[[UTF-16コード単位>3.1. Unicode]]のみを表します。つまり、その値は&tt(){\u0000}から&tt(){\uffff}の間の値に限られます。補助文字はchar列のサロゲートペアか取扱い可能なAPIで使える整数値で表す必要があります。

文字リテラルは常に&tt(){char}型です。

&bold(){&i(){SingleCharacter}や&i(){EscapeSequence}の後に続く文字が&tt(){'}でなければコンパイルエラーとなります。}

&bold(){始まりの&tt(){'}の後、終わりの&tt(){'}の前に行終端子が入るとコンパイルエラーとなります。}

&i(){&small(){[[3.4.>3.4. 行終端子]]で明記した通り、文字CRとLFは決して&i(){InputCharacter}とはなりません。それらは&i(){LineTerminator}を構成するものとして認識されます。}}

#divstyle(background-color:#f0f0ff;border:1px solid black;padding 4px){

&i(){&small(){以下は文字リテラルの例です。:}}
-&tt(){'a'}
-&tt(){'%'}
-&tt(){'\t'}
-&tt(){'\\'}
-&tt(){'\''}
-&tt(){'\u03a9'}
-&tt(){'\uFFFF'}
-&tt(){'\177'}
-&tt(){'Ω'}
-&tt(){'⊗'}

}

&i(){&small(){Unicodeエスケープを極初期に処理されるため、ラインフィード(LF)の値をとる文字リテラルとしての&tt(){'\u000a'}という書き方は正しくありません。Unicodeエスケープ&tt(){'\u000a'}は[[変換ステップ1>3.3. Unicodeエスケープ]]において実際のラインフィードに変換され、[[ステップ2>3.4. 行終端子]]においてラインフィードは&i(){LineTerminator}となるため、ステップ3においてその文字リテラルは有効ではりません。代わりに、[[エスケープシーケンス>3.10.6. 文字・文字列リテラル用のエスケープシーケンス]]&tt(){'\n'を使用します。同様にキャリッジリターン(CR)の値をとる文字リテラルとしての&tt(){'\u000d'}という書き方は正しくありません。代わりに&tt(){'r'}を使用してください。}}

&i(){&small(){CやC++では、文字リテラルは1つ以上の文字を含む表現でもよいのですが、そのような文字リテラルの値は実装依存となります。Javaプログラミング言語では、文字リテラルは常にただ1つの文字を表します。}}

***[[3.10.5. 文字列リテラル]]
***[[3.10.6. 文字・文字列リテラル用のエスケープシーケンス]]
***[[3.10.7. ヌルリテラル]]
**[[3.11. 分離子]]
**[[3.12. 演算子]]
目安箱バナー