【发布时间】:2022-01-27 11:14:14
【问题描述】:
由于出现错误并盯着this video by Copper Spice 看,我试图学习价值类别。
他们继续定义一个表达式,并作为示例提供printf() at this point in the video(下面的屏幕截图)。
printf() 是怎样一个表达式?我一直认为函数调用在自己编写时并不是真正的表达式。它们更像是我的初学者头脑所想的陈述。此外,他们提供的定义中提到了 operators 和 operands,但在 printf 中却没有。我错过了什么?
提到的数据类型是printf 的返回值。返回 void 的函数呢?
【问题讨论】:
-
int x = 2 + 3;包含表达式2 + 3,其计算结果为5。int x = 2 + printf("hello");包含表达式2 + printf("hello"),其计算结果为7(又名2加上printf("hello")返回的值,在这种情况下几乎可以肯定是5) -
"当他们自己写的时候":混淆可能是,例如
printf();是一个statement,更具体的说是一个expression statement,意思是一个由一个expression组成的语句,即printf().
标签: c++ c++11 c++14 rvalue lvalue