早教吧作业答案频道 -->其他-->
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的区...的网友还看了以下:
圆的半径改变时,圆的周长也随之改变,这个改变可按公式l=2πr来计算,其中L是圆的周长,r是圆的半 2020-04-12 …
发票上单位名称写错了一个偏旁但是改过来了可以吗“升”写成连的走之旁了在上面改的可以吗 2020-05-15 …
I like electricity better than gas.改同义l electrici 2020-05-17 …
1.The boy is 158 centimetres tall.The girl is 158 2020-05-17 …
在mA+NbpC的可逆反应中,m、n、p为各物质的化学计量数.现测得C每分钟增加amol/L,B每 2020-05-20 …
化学反应中,要改变的和不改变的?在化学反应中,什么一定要改变(请全部列举出来)什么一定不改变(请全 2020-05-20 …
【问题1】(6分) 通过入侵从而进行网页篡改的可能途径有哪些?这些途径各对应安全系统防护体系的哪 2020-05-26 …
如图一个大“L”是由四个全等的小“L”拼成.(1)请你用虚线把大“L”分割成四个全等的小“L”.( 2020-06-12 …
用一质量为1.2g的铝片与45mL4mol/L稀硫酸反应制取H2,若要增大反应速率,采取的措施:① 2020-06-16 …
Origin化学软件,↓如何打?l(1) A+ Cl(2) A+2Cl(3) A+3Cl(4) A 2020-06-27 …