「3.10.4. 文字リテラル」の編集履歴(バックアップ)一覧はこちら
「3.10.4. 文字リテラル」(2012/09/05 (水) 22:42:28) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*[[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}の間の値に限られます。補助文字は&tt(){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. 演算子]]
*[[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. 文字リテラル
&i(){文字リテラル(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}の間の値に限られます。補助文字は&tt(){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. 演算子]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: