A. 在c语言中,++运算符要求左值,那该怎么用呢,请高手举几个例子
什么左值右值?
其实我想说的是:
i++表示先取表达式的值,然后i在自增1;++i表示i先自增1然后在取表达式的值。
举个列子:
int i=1;
int a=i++;//那么a的值为1,而i的值变为2
int b=++i;//那么b的值为3,i的值也为3
B. C语言语法问题,左操作数必须为左值是什么意思啊我该怎么改啊
所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们用变量作左值,还可以看到,指针和引用也可以作左值。改成b=9-c。
一般形式为:变量=表达式。它的作用是将一个表达式的值赋给一个左值。
计算赋值运算符右侧表达式的值(“=”为赋值运算符),将赋值运算符右侧表达式的值赋给左侧的变量,将赋值运算符左侧的变量的值作为表达式的值。
例如:
int
a,
b,
c;
a=3;
b=4;
c
=
(
a
+
b
)*(2*a
-
b)
//
得出14
(2)c语言哪些运算符要左值扩展阅读:
注意
1.
多重赋值表达式不能出现在变量说明中。例如:
int
i=j=0;
是非法的。
例:有变量说明
int
a=2,b;
指出下面表达式运算后a和b的结果。
b+=b=++a;
答:a为3,b为6。
<>
有时将赋值运算与比较运算结合在一起形成嵌入赋值。例如:
while
((ch=getchar())!='\n');
这条语句的含义是:等待用户按下回车键后程序向下执行。
2.
x
*=
y+8等价于x=x*(y+8),不等价于
x
=
x*y+8。
同样:z
&=
y-x等价于z
=
z
&
(y-x),而不等价于z
=
z
&y
-x。
参考资料:
搜狗网络-赋值运算符
C. C语言中左值对象有哪些哪些数据类型或是表达式可以算作是左值!
左值,算是可访问存储的区域,要求“可访问存储”,那就可改变,变量(很多类型)就是,常数不是,你可以根据这个判断下左值。
理解下左值对象吧,一般来说是计算机里一块可访问可存储的区域,对象只是这块区域的抽象标识,变量a,b,*p等都算,只不过按不同的类型分出不同大小的区域。标识可以任意给,所以对象有哪些,举不完,而对象类型倒是有,什么int对象,char对象,指针对象等等吧。
既然左值要求的是“可访问可存储”,即可找到它改变它,这个则不会关系到区域大小。而存储区域大小是靠类型来确定(比如int我分多大内存啊),既然不关系到大小,与数据类型何干!
有几个运算符构成的表达式,可以算是左值,不过很少(比如a++;a--;*p等他们可单独成立,这个我也知道不多,还有sizeof(?)挖一块?大小的区域),其他的一般都算右值的,因为表达式最后一般都会产生一个不可变的值(比如a+b,最终整个表达式代表一个结果值,不可变,它要赋给一个存储对象也就是左值),当然左值表达式可以做右值,它本来就存有一个值,可以传给他人嘛。。。
以前研究过左值,可以一起讨论下。。。。。
D. C语言 什么叫做左值右值
左值,就是指可以被取地址的表达式。简单的说,可以出现在等号左边的就是左值。比如:
E. c语言什么叫需要左值作为赋值左操作数
左值就是可以被修改的值
你把==错误的写成了=,所以错了,这是逻辑比较,不是赋值,赋值是单等于,比较是双等于
F. c语言中规定 赋值运算符的左边必须是什么
赋值运算符的左边必须是变量。
简单赋值运算符记为“=”,由“= ”连接的式子称为赋值表达式。其一般形式为:
变量=表达式
例如:
x=a+bw=sin(a)+sin(b)y=i+++--j
赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性,因此a=b=c=5可理解为a=(b=(c=5))。
在其它高级语言中,赋值构成了一个语句,称为赋值语句。 而在C中,把“=”定义为运算符,从而组成赋值表达式。 凡是表达式可以出现的地方均可出现赋值表达式。
例如:式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13。
(6)c语言哪些运算符要左值扩展阅读
赋值运算符的作用是把右侧表达式的值存入左侧变量中,C语言中赋值操作是作为一种表达式来处理的。
赋值运算符(=)可以和算术运算符(+,-,*,/,%)及双目运算符(&,|,^,>>,<<)组合成一个复合赋值运算符。但需要注意的是复合赋值运算符的两个组成符号之间不能有空白字符。
G. eclipse的C语言问题 报错:赋值运算符的左操作数必须是左值
左值就是在赋值中可以放在赋值操作符两边的值,比如: int a = 1; double b = 2.0 a = b; b = a; 这里a和b都是左值, 你那个c+k = 32不能写成 32=c+k 因为32是常量,所以这个不是左值
H. 在C语言中11种赋值运算符的具体含义,用法
1.六个变量=表达式的赋值:
=是赋值运算符,/=是除后赋值,*=是乘后赋值,
%=是取模后赋值,+=是加后赋值,-= 是减后赋值,
2.<<=是左移后赋值,变量<<=表达式 左移就是将左边的数的二进制各位全部左移若干位,右边的数指定移动位数,高位丢弃,低位补0, 移几位就相当于乘以2的几次方。
3.>>=是右移后,变量>>=表达式,右移运算符是用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定(右操作数必须是非负值),移到右端的低位被舍弃,对于无符号数,高位补0。
对于有符号数,某些机器将对左边空出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”);
对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。
如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统,系统移入0或系统移入1。
移入0的称为“逻辑移位”,即简单移位;移入1的称为“算术移位”。
4.&= 按位与后,变量&=表达式,按位与是指:参加运算的两个数据,按二进制位进行“与”运算。
如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。
5.^= 按位异或后赋值,变量^=表达式,参与运算的两个量按照对应的位进行异或运算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0
一个数与0异或仍保持不变,如a^0=a
一个数与自己异或结果为0,如a^a=0
11.|=是按位或后赋值,变量|=表达式,参与运算的两个量按照对应位进行或运算,且0|0→0, 0|1→1, 1|0→1, 1|1→1。
(8)c语言哪些运算符要左值扩展阅读:
1.赋值表达式的功能是计算表达式的值再赋予左边的变量。
赋值运算符具有右结合性,因此a=b=c=5可理解为a=(b=(c=5))。
2.在其它高级语言中赋值构成了一个语句,称为赋值语句;
而在C语言中,
把“=”定义为运算符,从而组成赋值表达式。
3.凡是表达式可以出现的地方均可出现赋值表达式。
例如:式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13。
4.在C语言中也可以组成赋值语句。
按照C语言规定,任何表达式在其未尾加上分号就构成为语句。
I. 在C语言中,为什么++i为左值表达式,而i++不是左值表达式
++i是直接给i变量加1,然后返回i本身,因为i是变量,所以可以被赋值,因此是左值表达式
i++现产生一个临时变量,记录i的值,在i的值被使用后,再后给i加1,接着返回临时变量,然后临时变量不存在了,所以,不能再被赋值,因此是右值表达式