左值、判断布尔值、判断字符串相等
1761 2021-01-28 09:54
guoyu_bo
C++语言中可以放在等号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。
或者说左值是代表一个内存地址值,通过这个内存地址,就可以对内存进行读写操作;这也就是为什么左值可以被赋值的原因了。
相对应的还有右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值。
比如: int ia,ib;
ib=0;
ia=ib;
在这里,首先定义ia,ib。然后对ib赋值,此时计算机取ib的左值,也就是这个符号代表的内存位置即内存地址值,计算机取0的右值,也就是数值0;然后给ia赋值为ib,此时取ib的右值给ia的左值;
所以说,ib的左值、右值是根据他的位置来说的;
这也算是形式语言的一个有意思之处吧。
2010-02-01 15:18:27
superlee19
1>数据值,存储在某个内存地址中,也称右值(rvalue),右值是被读取的值(read value),文字常量和变量都可被用于右值。
2>地址值,即存储数据值的那块内存地址,也称左值(lvalue),文字常量不能被用作左值。
左值是一个引用到对象的表达式,通过左值我们可以取出该对象的值。通过可修改的左值表达式(modifiable lvalue)我们还可以修 改该对象的值。(需要说明的是,在C++中,左值还可以引用到函数,即表达式f如果引用的是函数类型,那么在C中它既不是左值也不是右值;而在C++中则 是左值)。因为左值引用到某一对象,因此我们使用&对左值表达式(也只能对左值表达式和函数)取址运算时,可以获得该对象的地址(有两种左值表达 式不能取址,一是具有位域( bit-field )类型,因为实现中最小寻址单位是 byte;另一个是具有 register指定符,使用register修饰的变量编译器可能会优化到寄存器中)。
全部评论