【发布时间】:2016-07-04 02:23:34
【问题描述】:
语言标准说:
[ 注意:第 5 条定义了语法、评估顺序和含义 58 表达式是一系列运算符和 指定计算的操作数。表达式可以导致 价值并可能导致副作用。 ——尾注]
例如我的代码如下:
int i=1;
A obj;
那么,以上两个语句都算作“表达式”吗?
stackoverflow 上的一些人说“int i=1;”不是表达式。这对我来说很奇怪。
(1) 初始化是一种“计算”,对吧?所以应该算是“表达”吧?
(2) 一个对象; //调用一个ctor。 ctor是一种计算,所以它应该被视为“表达式”?
【问题讨论】:
-
一个简单的经验法则是表达式没有分号。添加分号会将它们变成语句。此外,表达式是可以用括号括起来并在另一个表达式中使用的东西。你不能写
x = (int i=1;)。 -
检查语法,我这里提取出来了:github.com/o11c/chintzy/blob/master-py/chintzy/_std/…
-
@KeithThompson:
42是literal,这是primary-expression。我不知道你为什么认为它不是。该注释是非规范性的,并且没有定义表达式。 -
@MSalters:你是对的。我没有注意到该注释是非规范性的。 (C标准有类似的措辞,是“表达式”的规范定义。)我将删除我之前的评论。
标签: c++ initialization expression declaration