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