wht666 发表于 2020-4-1 23:23:25

左值右值问题

看来左值右值的扩展,但是还是不理解什么是左值,右值
请大佬们解答一下,这个东西有什么用呀

ba21 发表于 2020-4-1 23:30:51

= 等号
a = b+c
a 是左值
b+c 是右值
在等号左边就是左值,右边就是右值。就是个称呼。你喜欢你叫左边的数,右边的数不也是一个意思。

倒戈卸甲 发表于 2020-4-2 00:48:11

能被访问的变量就能做右值,能被修改的变量就能做左值。但是,谁是左值谁是右值,其实并没有那种一眼就看出来的特征,完全是你遇到一个就积累一个。比如说最基础的:普通类型的变量在函数体中既能被访问又能被修改,那就是既可做左值又可做右值。变量被const修饰,只能被访问而不能被修改,那就不能做左值。一般来说函数的返回值只能被访问,而不能被修改,那一般情况下,函数的返回值就只能是右值,不能为左值。再比如说数组名是固定的,就不能做左值。。。。
总之就是一个标识符,你要先知道它是什么品种,再知道该品种的概念和性质,最重要是能否修改。然后你知道它能否作为左值。
再总结为六个字,多学多看多记

xiangjianshinan 发表于 2020-4-2 09:31:58

倒戈卸甲 发表于 2020-4-2 00:48
能被访问的变量就能做右值,能被修改的变量就能做左值。但是,谁是左值谁是右值,其实并没有那种一眼就看出 ...

多学多看多记{:5_110:}

wht666 发表于 2020-4-2 09:56:50

ba21 发表于 2020-4-1 23:30
= 等号
a = b+c
a 是左值


可是小甲鱼那个左右值的扩展说的不是这样,说不能单纯理解为左边就是左值,右边就是右值

梦想灬远帆 发表于 2020-4-2 10:00:10

能在程序中用&取地址的是左值,不能在程序中用&的是右值,如:一个变量a,它可以使用&a获取a的地址,但你使用&10是不行的

wht666 发表于 2020-4-2 10:03:08

倒戈卸甲 发表于 2020-4-2 00:48
能被访问的变量就能做右值,能被修改的变量就能做左值。但是,谁是左值谁是右值,其实并没有那种一眼就看出 ...

好的,谢谢,我大概理解了
页: [1]
查看完整版本: 左值右值问题