表达结果与表达表示的差异

Difference between expression result and what an expression denotes

本文关键字:结果 表示      更新时间:2023-10-16

[basic.lval] p5状态:

glvalue的结果是用表达式表示的实体。

我对此有一些问题,这是含义:表达式表示的实体是什么?这与结果有所不同吗?[expr.type] P1状态:

表达式指定用参考表示

表示的对象或函数

因此,例如,给定声明 foo f;,其中 foo是类类型,表达式 f;也将是标识符,这就是表达式表示实体的含义,因为表达式名称对应于标识符?p> 几乎是我要问的是,表达式表示一个实体是什么意思?它与结果有何不同?

我想[basic.lval]/5基本上说命名/表示/指定的概念在标准中互换使用。

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

glvalue或prvalues是表达式[basic.lval]/1。评估所有表达式。即使是在表达式中出现的单个名称(不是在声明中(,也是一个表达式。在评估之前表达式可能表示一个实体,并在评估该实体中表达式结果。

例如,要评估表达式a+b,虚拟机首先评估aa表示某些对象,a评估的结果是此对象。b也是如此。然后,表达式a的结果和表达式b的结果(经过一些转换后(作为添加评估的操作数。

只有表达的结果由其他表达式使用。因此,将表达式混为结果似乎很自然。当我们这样做时,我们忘记了结果是对表达式评估的结果。