C语言采用赋值运算的方式改变变量的值,或者说为变量赋值。赋值运算符有一般形式和复合形式两种。
赋值运算符是符号“=”,它的作用是将一个数据赋给一个变量。由赋值运算符将一个变量和一个表达式连接起来的式子称为 赋值表达式 。赋值表达式的一般形式如下:
其作用是把赋值运算符右边表达式的值赋给赋值运算符左边的变量。例如:
说明 :
1)赋值运算后,变量原来的值被表达式的值替换。
【例2-7】 阅读下面的程序,给出程序的输出结果。
运行结果:
2)赋值表达式的值也就是赋值运算符左边变量得到的值,如果右边表达式的值的类型与左边变量的类型不一致,以左边变量的类型为基准,将右边表达式的值的类型无条件地转换为左边变量的类型,相应的赋值表达式的值的类型与被赋值的变量的类型一致。
【例2-8】 阅读下面的程序,给出程序的输出结果。
运行结果:
3)赋值运算符的优先级很低,仅高于逗号运算符。结合方向为“从右到左”。
例如,已知int a=2,b=5,计算表达式x=y=a+b的值。由于算术运算符的优先级高于赋值运算符的优先级,因此先计算a+b,值为7。按照结合方向“从右到左”,上式可改写为x=(y=a+b)。然后计算赋值表达式y=a+b,其值为7,同时变量y等于7。最后计算表达式x=y=a+b,其值为7,同时变量x等于7。
微视频2-6 赋值表达式
为使程序书写简洁和便于代码优化,可在赋值运算符的前面加上其他常用的运算符,构成复合赋值运算符,相应地,由复合赋值运算符也可以构成赋值表达式。
复合赋值运算符包括:
+=、-=、*=、/=、%=(与算术运算有关)
<<=、>>=、&=、^=、|=(与位运算有关)
复合赋值运算表达式如表2-6所示。
表2-6 复合赋值运算表达式
后五种复合赋值运算与位运算有关,详细说明参见2.6节。
【例2-9】 已知int a, b=5, c=4,计算表达式a+=a-=a=b+c的值。
首先,按照结合方向用加括号的方法确定计算顺序:
再改写为常规表示方法:
依次计算:
最后得出表达式的值为0,变量a的值也为0。
微视频2-7 复合赋值表达式