2 + 3被视为文字吗?

时间:2010-05-10 06:20:54

标签: literals

假设我有类似

的东西
int x = 2 + 3;

x是否被视为文字?

5 个答案:

答案 0 :(得分:16)

x是一个符号。 2 + 3是一个表达。 23是文字。

答案 1 :(得分:9)

不,它是编译时常量表达式中的两个文字。根据编译方式的不同,您可能无法区分生成的二进制文件。

答案 2 :(得分:8)

  • int - 变量的类型,标识符
  • x - 变量的名称,标识符
  • = - 作业
  • 2 - 文字
  • + - 两个文字之间的操作
  • 3 - 文字
  • ; - 声明的结尾

答案 3 :(得分:1)

  • int 是一种类型
  • x 是标识符
  • =,+ 是运营商
  • 2,3 是文字,因为“StringLiteral”将是

要了解如何命名所有这些语法元素,您可以浏览i.g.

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

答案 4 :(得分:1)

是的,这是一个字面意思。表达式将减少为文字,即使在程序运行之前,因此它是文字的

你可能在现实世界中看到的其他类型的文字(程序员也不能打扰他自己计算它,让编译器完成确定文字的繁重工作):

const unsigned int NEGATIVE_TESTER_FOR_32_BIT = 1<< 31;

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

[编辑:视编辑而定] 是的,这取决于编译器。但是我猜大多数编译器编写者都做了他们的功课,如果他们可以生成必要的汇编或虚拟机语言指令,那么在编译时计算东西只是为他们在公园散步。实际上,即使是字符文字'H',也不会以逐字'H'的形式存储在文件中,它会被存储为数字文字(72,或者在十六进制视图中存储为0x48或48h) )在最终机器代码中。我可以冒险猜测所有编译器都会将两个文字缩小为文字,而不是表达式。这是他们在公园散步(编译器编写者)