如何快速区分C++左值和右值

2022-04-30 11:15:28 浏览数 (2)

C 左值和右值,初学者经常傻傻分不清,可参看“C Primer”书中的描述,简单来说:

当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。

一个重要的原则:在需要右值的地方可以用左值来代替,但是不能把右值当成左值(也就是位置)使用。当一个左值被当成右值使用时,实际使用的是它的内容(值)。

还不明白的话,参见MSDN关于“Lvalues and Rvalues”的描述:

Every C expression is either an lvalue or an rvalue. An lvalue refers to an object that persists beyond a single expression. You can think of an lvalue as an object that has a name. All variables, including nonmodifiable (const) variables, are lvalues. An rvalue is a temporary value that does not persist beyond the expression that uses it. To better understand the difference between lvalues and rvalues.

0 人点赞