3

次のようなものがあるとします

int x = 2 + 3;

xリテラルと見なされますか?

4

5 に答える 5

16

xはシンボルです。2 + 3式です。23はリテラルです。

于 2010-05-10T06:23:34.683 に答える
9

いいえ、コンパイル時の定数式の 2 つのリテラルです。コンパイル方法によっては、結果のバイナリの違いがわからない場合があります。

于 2010-05-10T06:23:17.807 に答える
8
  • int - 変数の型、識別子
  • x - 変数の名前、識別子
  • = - 代入
  • 2 - リテラル
  • + - 2 つのリテラル間の操作
  • 3 - リテラル
  • ; - ステートメントの終わり
于 2010-05-10T07:19:15.117 に答える
1

はい文字通りです。式はリテラルに縮小されます。つまり、プログラムが実行される前であっても、リテラルです。

現実世界で目にする可能性のある他のタイプのリテラル (プログラマーは自分で計算する必要はなく、コンパイラーにリテラルを決定する単調な作業を任せます):

const unsigned int NEGATIVE_TESTER_FOR_32_BIT = 1 << 31;

const char ALPHABET_PIVOT = 'A' + (('Z' - 'A') / 2);

[編集:コンパイラに依存することについて] ええ、コンパイラに依存します。しかし、ほとんどのコンパイラ作成者は宿題をやっていると思います。言語の必然的なアセンブリまたは仮想マシン命令を生成できれば、コンパイル時に物事を計算することは、彼らにとって公園を散歩するだけです。実際、たとえば文字リテラル 'H' でさえ、ファイルに逐語的に'H'として格納されることさえなく、最終的なマシン コードで数値リテラル (72、または 16 進数表示で 0x48 または 48h) として格納されます。私は、すべてのコンパイラが 2 つのリテラルを式ではなくリテラルに縮小するという推測を危険にさらす可能性があります。彼ら(コンパイラライター)にとっては公園の散歩です

于 2010-05-10T07:02:58.863 に答える
1
  • intは型です
  • xは識別子です
  • =,+は演算子です
  • 2,3は"StringLiteral"のようにリテラルです。

これらすべての構文要素がどのように命名されているかを知るには、ig を閲覧できます

http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html

http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html

于 2010-05-10T06:38:29.413 に答える