C语言赋值运算符和赋值表达式

作者:vich 发布于 2008-11-10 13:22 评论(3)人阅读

C语言的赋值运算符包括基本赋值运算符和复合赋值运算符两种。

一、基本赋值运算符

形式:  =

功能:将赋值运算符右边表达式的值赋给其左边的变量。

例如:x=2+b 意思是将10+b的运算结果赋给变量x。

总结几个要点:

  1. 赋值号(=)左边只能是变量,绝对不能是常数或表达式。这是因为常数和表达式是没有存储单元的。
  2. 赋值号右边表达式类型要与左边的变量保持一致。如果不一致,则先将右边表达式的值转换为与左边变量相同的类型,然后进行赋值。
  3. 赋值运算符的结合方向为自右向左。如: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被赋值为6,j的值改变为6*/ (此处是先使用j的值,然后再自加。关于++ ,--双目运算见这里

a=20+(j=7);   /*a被赋值为27*/

a=(j=9)+(k=7);  /*a被赋值为16*/

转载请注明:转载自微风博客
相关文章:
·C语言算术运算符和算术表达式(2008-11-6 12:47:47)
·数据的表示(二)变量(2008-10-29 12:25:58)
·数据的表示(一)常量(2008-10-28 8:51:32)
·基本数据类型(2008-10-26 18:39:52)
·C 数据类型(2008-10-23 8:58:21)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  • quote 2.Gravatar Icon 瘟神之心
  • a=1,j=5,那么a+=j++; a的值应该为6
    对赋值运算符左、右两边的运算对象进行指定的算术运算符运算,再将运算结果赋予右边的变量。
    vich 于 2009-6-10 17:43:28 回复
    谢谢指出。你是对的。
  • 2009-6-10 16:45:58 回复该留言

我的SNS

相关标签

最新文章

技术摘要

最新评论及回复

热门文章