Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 表达式结果和表达式所表示内容之间的差异_C++_Language Lawyer - Fatal编程技术网

C++ 表达式结果和表达式所表示内容之间的差异

C++ 表达式结果和表达式所表示内容之间的差异,c++,language-lawyer,C++,Language Lawyer,国家: glvalue的结果是由表达式表示的实体 关于这一点及其影响,我有几个问题: 表达式表示的实体是什么? 这会与结果不同吗? 国家: 表达式指定由引用表示的对象或函数 例如,给定声明foof其中foo是类类型,表达式f也是一个标识符,这就是表示实体的表达式的含义,因为表达式名称对应于标识符 我想问的是,表达式表示实体意味着什么,它与结果有什么不同?我想[basic.lval]/5基本上说,命名/表示/指定和“结果”的概念在标准中可以互换使用 glvalue的结果是由表达式表示的实体。 pr

国家:

glvalue的结果是由表达式表示的实体

关于这一点及其影响,我有几个问题: 表达式表示的实体是什么? 这会与结果不同吗? 国家:

表达式指定由引用表示的对象或函数

例如,给定声明
foof
其中
foo
是类类型,表达式
f
也是一个标识符,这就是表示实体的表达式的含义,因为表达式名称对应于标识符


我想问的是,表达式表示实体意味着什么,它与结果有什么不同?

我想[basic.lval]/5基本上说,命名/表示/指定和“结果”的概念在标准中可以互换使用

glvalue的结果是由表达式表示的实体。 prvalue的结果是表达式存储到其上下文中的值;具有cv void类型的prvalue没有结果。 其结果为值V的prvalue有时被称为具有或命名为值V

glvalue或prvalues是表达式。将计算所有表达式。即使表达式(而不是声明)中出现的单个名称也是表达式。在计算之前,表达式可以表示实体,而在计算之后,表达式可以表示该实体中的结果

例如,要计算表达式
a+b
,虚拟机首先计算
a
a
表示某个对象,
a
的计算结果就是这个对象。b也一样。然后表达式
a
的结果和表达式
b
的结果(经过一些转换后)将用作加法计算中的操作数


其他表达式仅使用表达式的结果。因此,将一个表达式与结果混为一谈似乎很自然。当我们这样做时,我们忘记了结果是表达式求值的结果。

根据第一个引号,由于glvalue的结果是表示的实体,根据定义,它们之间可能没有区别。编辑:第一个引语专门指glvalues,但我不确定你是问这些类型的表达式还是一般的表达式,因为粗体部分更通用。简化,但希望不要太多:表达式是源代码,描述事物;实体存在于正在运行的程序中,是事物。表达式表示实体的方式与stackoverflow上下文中“Krystian S”和“提问者”表示您的方式类似。