在C ++中,表达式和文字之间有什么区别?

时间:2016-03-19 05:00:31

标签: c++

我的书将表达式定义为"一个具有值"的编程语句。和一个直接写入程序源代码的数据,但我仍然难以区分这两者。例如,3 + 3是一个文字AND表达式,还是只是一个表达式?为什么呢?

int number = 2+2;

整个陈述是一个表达式,还是恰当的值?为什么?整个语句的值为4,所以整个语句肯定是表达式吗?

在我看来,表达式通常涉及运算符,文字涉及单个数据,如4," Hello",' A'等。我也理解文字可以是一个表达式,因为一元运算符,如 - 或+。我是否正确地想到这一点?

2 个答案:

答案 0 :(得分:1)

表达式是指定计算的运算符和操作数序列。表达式可能会导致值,并可能导致副作用。

文字是以下之一:

  • integer literal
  • 字符文字
  • 浮点文字
  • string literal
  • boolean literal
  • 指针文字

我不会试图给出每一个的正式定义,但每个基本上只是一个值。

还有一种类型的文字虽然有些特殊:

  • 用户定义的文字

尽管用户定义的文字是文字,但文字的值是根据评估表达式的结果定义的。

参考文献:

表达式:[expr]
文字:[lex.literal]

(对于那些不熟悉它的人,方括号中的标记是用于指定C ++标准中的部分的符号)。

答案 1 :(得分:0)

例如,文字就像数字7。转换为汇编代码时,文字7在代码中仍然非常明显:

MOV   R1,  7  ; move the number 7 as a value into register R1

表达式是需要评估的东西。一般来说,您会发现C=A+B;的某些内容,其中A+B是表达式。

  

表达式是一系列运算符及其操作数   指定计算。表达评估可以产生结果   (例如,2 + 2的评估产生结果4)并且可以生成   副作用(例如评价std :: printf("%d",4)打印出   人物' 4'在标准输出上。)

http://en.cppreference.com/w/cpp/language/expressions http://en.cppreference.com/w/cpp/language/expressions#Literals