回复 9楼 lin5161678
您说左值和右值都属于一个表达式
以下说法是我从学习网站里了解来的。当然可能和c语言有些碰撞,不过像
表达式和
表达语句应该碰撞的比较少
先说说第一个
表达式
表达式 是文字,变量,运算符,和显示函数调用的组合,他们产生
单个输出值
执行表达式时,将对表达式中的每个术语进行求值,直到剩下单个值为止(此过程称为
求值)。 该单个值是
表达式的结果。
例如
4, 'a', "Hello".是表达式的值
2 + 3, x, x + 4是表达式
表达式语句是由一个表达式和一个分号组成的语句。 执行该语句时,将对表达式进行求值(并且将舍弃表达式的结果)。
int x=5+4;这一句是表达式语句
如果对舍弃表达式的结果不明白
就拿上面表达式语句举例吧
5+4=9会把最后的值9赋值给x,然后丢掉表达式的结果
在c++表达式语句有可能很有用,有可能很没用,在c中应该是同样的吧
比如
3+2;是个很没用的表达式,因为在执行他的时候将会丢掉5
int x=5+4;是个很有用的表达式,当9丢掉的时候但是已经分配给x使用了
在c++中
如何看待
cout<<1+2;呢?
直接复制。。。
堆积在CPU上或压入堆栈(RAM)。
如果将值压入堆栈,则@std :: cout.operator <<完成后将弹出该值。 请注意,堆栈没有与RAM中的其他值混合。 它有自己的保留空间。
2)
1和2不在内存中。 该表达式是在编译时求值的,因此3与构成您代码的字节一起存储。 它不与其他值混合,因为代码在RAM中获得了自己的空间。 根据调用约定,将3压入堆栈或保留在CPU上。
(涉及硬件上的东西我也不怎么理解,总之cout1<<1+2;和直接1+2;不一样,)
[此贴子已经被作者于2020-3-25 11:08编辑过]