c语言中 左值 右值 是什么意思??
c语言中 左值 右值 是什么意思??
[解决办法]
左值就是等号左边的值,右值就是等号右边的值
[解决办法]
呵呵,废人是想让你先建立起最原始的感性认识,既然你知道的已经有那么多,那么人家也就不好说什么了。:P
[解决办法]
有那么详细的文章怎么还要问呢?
[解决办法]
C语言和C++语方的标准规范中对这两个概念的陈述不完全相同。但基本上,左值就是一个可被存储的单元,右值就是一个可被读取的数据。
[解决办法]
左右值的概念最早就是因赋值号左右两边的值的不同属性而提出,只是后来在不断追求准确的同时也变得越来越抽象,以至于越来越只可意会了。。。
[解决办法]
唉,看标准吧。C语言里怎么说的偶也忘记了。
C++标准中,对于int a, b;来说,a和b都是左值。
但由于“a = b”这种赋值表达式中,赋值号右边需要的是个右值,所以当你把一个左值放上去的时候,编译器会把它隐式转换成一个右值,即取用那个变量所对应的存储单元中的数值。
而相反,假如你放上去的本来就是个右值,比如:
a = 5;
a = sizeof(a);
a = strlen( "abcde ");
等等,那就没有任何隐式转换发生。
[解决办法]
C语言中貌似就说了一句“左值就是一个对象”。- -b
看见了吧,其实对于这个问题,写标准的人都很忌讳。- -b。
不过仔细一想,还真挺准确的。
[解决办法]
不是赋值后转换,是赋值前转换。