早教吧作业答案频道 -->其他-->
lvalue和rvalue的区别俺以前的在C入门的理解是lvalue是可以被赋值、修改的,rvalue是只读的.但在vc++2010入门书里面是这样解释的:lvalue:指的是内存中持续存储数据的一个地址.rvalue:临时存储的
题目详情
lvalue和rvalue的区别
俺以前的在C入门的理解是lvalue是可以被赋值、修改的,rvalue是只读的.
但在vc++2010入门书里面是这样解释的:
lvalue:指的是内存中持续存储数据的一个地址.
rvalue:临时存储的表达式结果.
以下三个表达式:
a=b+c;
b=++a;
c=a++;
其中:语句1:表达式"b+c"是一个rvalue.
语句2:表达式"++a"是一个lvalue;
语句3:表达式"a++"是一个rvalue;
因为基本上每章都有lvalue和rvalue的讨论,俺看了半天也不明白其区别和含义,这书我快看不下去了.如果能浅显易懂的让俺明白最好了.
俺以前的在C入门的理解是lvalue是可以被赋值、修改的,rvalue是只读的.
但在vc++2010入门书里面是这样解释的:
lvalue:指的是内存中持续存储数据的一个地址.
rvalue:临时存储的表达式结果.
以下三个表达式:
a=b+c;
b=++a;
c=a++;
其中:语句1:表达式"b+c"是一个rvalue.
语句2:表达式"++a"是一个lvalue;
语句3:表达式"a++"是一个rvalue;
因为基本上每章都有lvalue和rvalue的讨论,俺看了半天也不明白其区别和含义,这书我快看不下去了.如果能浅显易懂的让俺明白最好了.
▼优质解答
答案和解析
lvalue 就是 left value 左值
rvalue 就是 right value 右值
之所以叫这么个名字, 是因为 左值 可以放在 = 的左边, 而右值不可以.
int a;
const int b = 3;
a = 10; // a可以放在=的左边, 也就是说可以赋值, 那么就是"左值"
b = 10; // const 类型不可以赋值, 也就是说不可以放在=的左边, 所以是"右值"
左值包括所有的 "非const" 变量.
右值包括所有"不能赋值"的东西, 包括const 变量, 临时变量, 常数等等.
b+c 返回临时对象, 右值, 所以你不可以 b+c = x;
++a 前 ++和--都返回本身的引用, 属于左值, 所以可以(++a) = x; 虽然这么写没有意义.
a++ 后 ++和--都返回临时变量, 是"右值"
是左值还是右值, 只要看他能不能被赋值就可以了.
至于const对象, 你非要用强制类型转换让他变成左值也不是不可以..
rvalue 就是 right value 右值
之所以叫这么个名字, 是因为 左值 可以放在 = 的左边, 而右值不可以.
int a;
const int b = 3;
a = 10; // a可以放在=的左边, 也就是说可以赋值, 那么就是"左值"
b = 10; // const 类型不可以赋值, 也就是说不可以放在=的左边, 所以是"右值"
左值包括所有的 "非const" 变量.
右值包括所有"不能赋值"的东西, 包括const 变量, 临时变量, 常数等等.
b+c 返回临时对象, 右值, 所以你不可以 b+c = x;
++a 前 ++和--都返回本身的引用, 属于左值, 所以可以(++a) = x; 虽然这么写没有意义.
a++ 后 ++和--都返回临时变量, 是"右值"
是左值还是右值, 只要看他能不能被赋值就可以了.
至于const对象, 你非要用强制类型转换让他变成左值也不是不可以..
看了lvalue和rvalue的区...的网友还看了以下:
(29)路由器在网络中( )。A)识别的是数据帧的物理地址B)识别的是数据包的网络地址C)既不识别物 2020-05-23 …
路由器在网络中( )。A)识别的是数据帧的物理地址 B)识别的是数据包的网络地址C)既不识 2020-05-23 …
路由器在网络中( )。A.识别的是数据帧的物理地址B.识别的是数据包的网络地址C.既不识别物理地址, 2020-05-24 …
路由器在网络中()。A.识别的是数据帧的物理地址B.识别的是数据包的网络地址C.既不识别物理地址,也 2020-05-24 …
(2010•唐山一模)如图,在四棱锥V-ABCD中,底面ABCD是矩形,侧棱VA⊥底面ABCD,E、 2020-11-12 …
什么是富豪角标6、单位的物理意义:1.2米/秒表示:a、由v=s/t可变形得到:s=v·t,t=s/ 2020-11-21 …
起重机以大小为v0的速度将重物匀速提升.若绳子因故突然断开的瞬间,重物的加速度的大小a和速度的大小v 2021-01-22 …
一气球吊着一重物,以7m/s的速度匀速上升,某时刻绳子突然断裂,则绳子断裂瞬间重物的速度V和加速度a 2021-01-22 …
起重机以大小为v0的速度将重物匀速提升.若绳子因故突然断开的瞬间,重物的加速度的大小a和速度的大小v 2021-01-22 …
一气球吊着一重物,以7m/s的速度匀速上升,某时刻绳子突然断裂,则绳子断裂瞬间重物的速度V和加速度a 2021-01-23 …