右值指的是引用了一个存储在某个内存地址里的数据。从上面的两个定义可以看出,左值其实要引用一个对象,而一个对象在我们的程序中又肯定有一个名字或者可以通过一个名字访问到,所以左值又可以归纳为:左值表示程序中必须有一个特定的名字引用到这个值。而右值引用的是地址里的内容,所以右值又可以归纳...
a++是将一个变量a作为左值,这是可以的。而++(a++)是将a++的值作为右值,常量值是非法的右值,所以不可以。C++中的“++” (自增)、 “--” (自减)运算符是使用方便且效率很高的两个运算符,它们都是一元运算符。这两个运算符都有前置和后置两种使用形式。当“/”用于两整型操作数相除时...
这是因为选项A中的表达式a+1不是一个合格的左值,它只能作为右值使用,而单目运算符&只能后接左值,这里的左值与右值是以一个值或表达式出现在赋值表达式的左边与右边来区分的;而选项D的错误在于变量i没有被初始化,因而是不能被索引运算符运算的。
/= ^= <<= = %= 均是指 左值 对自身的一种赋值行为 其中 a(左值)+= a*a(右值) 就变成了 a(左值)=a(左值)+(右值)
所谓的左值,说通俗一点就是可以被修改和引用的值,左值可以取地址。与之相对的就是右值。在使用时,左值可以作为右值,但右值不能作为左值。 B、D的错误在于无法划分为有效的C/C++运算符 C当然是对的,至于是看作(a++)+b还是a+(++b),个人倾向于前者。因为在计算表达式时,应保证整个运算式的结合性一致。当遇到...
因为++操作符的对象是可修改的左值,就好象 a += 1一样,是可以赋值的变量,但是a++本身是一个表达式,是一个右值(比如a += 1中的1),不可修改,所以(a++)++试图改变一个非变量的值,编译后会出错
计算机就读取他们的“右值”,也就是其代表的真实值。简单来说就是,左值相当于地址值,右值相当于数据值。但是你这里+=这个赋值运算符的左值是a++,它是一个对内存地址数据的操作,对一个操作赋值当然是错误的,就好像如果有一个int a,你不能赋值为a+1=2一样 ...
a=0?a=1?注意:尽管++的优先级比a高,但是!重点是,++的副作用完成的时间是不确定的!C:%运算符两侧必须是整数操作数.D:a=a+7=c+b;这句代码的问题在于a+7=c+b;a+7是什么?a+7是一个右值(right-value),是不允许被赋值的.关于什么叫右值,你可以自行去百度搜搜看.附上A和B的编译截图 ...
B的意思是i=(j==0);(比较运算符级别比赋值运算符高)//先返回j==0的值,正确为1错误为0,再把它的值赋值给i C的意思是把整型数65+3的值强制转换为字符类型char,返回ASCII为68的'D'D的意思是将x+1赋值给x+1,因为x+1是个右值,只能放在赋值运算符的右边,所以非法 答案为D 第二题是B ++...
不是左值。左值是在等号左边的表达式,右值是在等号右边的表达式,判断左值右值很简单。难的是:那些东西可以做左值,那些东西不能做左值,也就是说,那些可以写在等号左边,那些不能写在等号左边。我认为:&a不能做左值,也就是不能写在等号左边。最好的方式就是试验一下。