「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. 演算子]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
人気記事ランキング
目安箱バナー