首页 > 试题广场 >

什么是 C++ 的左值和右值?有什么区别?

[问答题]
什么是 C++ 的左值和右值?有什么区别?
可以取地址的变量是左值,不能取地址的是右值。
发表于 2025-07-27 09:53:37 回复(0)
简单说,左值就是等号左边的值,可以对其取地址,一般是变量名,右值就是等号右边的值,一般是常量
发表于 2025-07-22 10:21:12 回复(0)
可以取地址的变量是左值,不能取地址的是右值。
发表于 今天 14:19:16 回复(0)
左值:等号左边的变量,有内存地址 右值:等号右边的变量,只是一个数据,不能取地址
发表于 2025-09-26 16:29:08 回复(0)
左值有地址,可以取地址,右值只是临时值,表达式结束就会销毁
发表于 2025-09-24 19:28:27 回复(0)
左值可以取地址,右值不可以取地址,是临时变量
发表于 2025-09-17 18:52:38 回复(0)
左值就是出现在赋值语句的左侧 并且持久存储地址的表达式 而右值是出现在赋值语句右侧 表示临时变量或者是字面常量的一个量 左值既可以出现在赋值语句的左侧 也可以出现在赋值语句的右侧 而右值只能出现在赋值语句的右侧 左值的生命周期一般较长 可以维持到作用域结束 而右值的生命周期较短 纯右值一般会在表达式结束之后立即销毁 将亡值在表达式结束之后同样会结束 只是具备可移走语义
发表于 2025-09-07 18:51:43 回复(0)
左值一般表示具有持久地址的表达式,例如解引用,数组元素,数据变量,右值一般是没有持久地址的常量,例如函数的返回值
发表于 2025-09-06 14:55:19 回复(0)
**左值(lvalue)**:有持久地址的对象,可出现在赋值左侧。 **右值(rvalue)**:临时对象和字面量,无地址,只出现在赋值右侧。 **左值引用(T&)**:绑定左值,可修改原对象 **右值引用(T&&)**:绑定右值,可修改临时对象,用于移动语义和完美转发 | 类型 | 存储地址 | 生命周期 | 可否修改对象 | 示例 | | -------------- | -------- | -------------- | ------------ | ----------------- | | 左值 (lvalue) | 有 | 持久 | ✅ | `int x; x = 10;` | | 右值 (rvalue) | 无 | 临时 | ❌ | `10`, `x+5` | | 左值引用 (T&) | 有 | 与绑定对象相同 | ✅ | `int& r = x;` | | 右值引用 (T&&) | 有 | 延长临时对象 | ✅ | `int&& rr = x+5;` |
发表于 2025-09-04 10:55:29 回复(0)
简单而言 左值就是可以取地址的值 右值无内存地址
发表于 2025-08-26 21:59:47 回复(0)
c++的左值是能取地值的值,它能够持久化存储,相反不能取地址的是右值,一般是临时变量
发表于 2025-08-25 22:02:00 回复(0)
右值是临时变量,不可取地址,左值可以对其取地址,在C++11后新增特性,可以对右值进行引用
发表于 2025-08-22 15:24:31 回复(0)
左值可以取地址,右值是临时值,无法取地址,只能在等号右侧
发表于 2025-08-19 14:54:31 回复(0)
左值是能取地址的值,右值是不能取地址的值,临时变量等,即将销毁的值
发表于 2025-08-11 21:29:13 回复(0)
左值:可以取地址,存储确定地址,赋值等式左边
发表于 2025-08-11 08:40:47 回复(0)
左值可以取地址,右值不行比如临时变量,函数的返回值,字母常量45
发表于 2025-08-05 22:40:59 回复(0)
C++左值一般是变量在等号左边,右值一般为常量或者对象,只能在右边
发表于 2025-07-30 20:49:09 回复(0)
左值通常是用来表示某片已经被开辟内存的名字,他是有实际的内存地址的可以被赋值具体的数据并将其保存,通常作为变量出现,而右值通常是一组临时数据,不会有专门为其开辟的地址,相应的表达式调用结束后就销毁了
发表于 2025-07-28 23:35:35 回复(0)
左值可以被取地址,可以出现在表达式的左侧或者右侧,比如变量。右值不能被取地址,出现在表达式的右侧,一般是字面常量
发表于 2025-07-21 10:42:55 回复(0)
左值是具有持久存储地址的表达式,可 取其地址,出现在赋值语句左侧; 右值表示临时对象或字面常量,不具有持久存储地址,出现在赋值语句右侧
发表于 2025-07-08 15:22:12 回复(0)