◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
C语言赋值运算符和赋值表达式
C语言的赋值运算符包括基本赋值运算符和复合赋值运算符两种。
一、基本赋值运算符
形式: =
功能:将赋值运算符右边表达式的值赋给其左边的变量。
例如:x=2+b 意思是将10+b的运算结果赋给变量x。
总结几个要点:
- 赋值号(=)左边只能是变量,绝对不能是常数或表达式。这是因为常数和表达式是没有存储单元的。
- 赋值号右边表达式类型要与左边的变量保持一致。如果不一致,则先将右边表达式的值转换为与左边变量相同的类型,然后进行赋值。
- 赋值运算符的结合方向为自右向左。如:float x=3.1;int y; y=x+2; 这个赋值运算的处理过程是:现将2转换为2.0,再计算3.1+2.0;运算结果为5.1,最后将float 的结果5.1转换为int型整数5并付给变量y。
二、复合赋值运算符
为了简化程序并提高编译效率,C语言允许在赋值运算符”=“之前加上其他运算符,这样就构成了复合赋值运算符。
形式: 算术运算符=
功能:对赋值运算符左、右两边的运算对象进行指定的算术运算符运算,再将运算结果赋予右边的变量。
例如:
- a+=b; 等价于a=a+b;
- a-=b; 等价于a=a-b;
- a*=b; 等价于a=a*b;
- a/=b; 等价于a=a/b;
- a%=b; 等价于a=a%b;
总结几个要点:
复合赋值运算符右边的表达式是一个运算”整体“,不能把它们分开。如:a*=b+1 ;等价于a=a*(b+1);。如果把:a*=b+1;理解为a=a*b+1;那就错了。
三、赋值表达式
用赋值运算符将运算对象连接而成的式子称为赋值表达式。例如:k=(j=1);由于赋值运算符的结合性是从右向左的,因此该赋值表达式等价于k=j=1。
下面是赋值表达式的例子:
int k,a=1,j=5;
a+=j++; /*a被赋值为5,j的值改变为6*/ (此处是先使用j的值,然后再自加。关于++ ,--双目运算见这里)
a=20+(j=7); /*a被赋值为27*/
a=(j=9)+(k=7); /*a被赋值为16*/
原创文章如转载,请注明:转载自微风博客 [ http://www.vichx.com/ ]
本文链接地址:http://www.vichx.com/post/c-2-4-2.html
- 1.
 Mr.Z
- http://san28.cn
- 光棍节Happy!
- 2008-11-11 1:46:29 [Report Spam] 回复该留言


