表达结果与表达表示的差异
Difference between expression result and what an expression denotes
[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
,虚拟机首先评估a
。a
表示某些对象,a
评估的结果是此对象。b也是如此。然后,表达式a
的结果和表达式b
的结果(经过一些转换后(作为添加评估的操作数。
只有表达的结果由其他表达式使用。因此,将表达式混为结果似乎很自然。当我们这样做时,我们忘记了结果是对表达式评估的结果。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 表示"accepting anything for this template argument" C++概念的通配符
- valgrind-hellgrind与泄漏检查的结果不同
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 如何将ampl中的集合表示为c++中的向量
- std::is_base_of表示ctor编译错误
- 输入中的字符串数未知(以字母表示)
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 序列化,没有库的整数,得到奇怪的结果
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 在更改for循环的第三部分后,未使用for循环结果
- 浮点数的机器表示不是我预期的结果
- 表达结果与表达表示的差异
- 变量的字节表示的意外结果
- 表示三元条件“?:”的结果类型
- 使用指针表示法反转cstring时出现意外结果