2.4.2 赋值运算符和赋值表达式
在程序设计中,赋值运算符是最重要的运算符,完成对变量的赋值操作。赋值操作将一个表达式的值(数据值)存储到一个变量对应的存储单元中(即对变量的值进行了修改)。需要注意:只能对变量进行赋值,而表达式可以是常量,也可以是变量,还可以是包含运算符的表达式。
1.赋值运算符
C语言将=定义为赋值运算符,它的作用是将一个数据值赋予一个变量。如:
i=56
执行一次赋值操作(或称赋值运算),将常量56赋予变量i(作为变量i的当前值)。
2.赋值表达式
由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式,一般形式为
变量=表达式
执行赋值表达式时,先计算出表达式的值,再赋予变量。
在使用赋值表达式时应注意几点:
1)在赋值运算符左边必须是变量,不能是常量或包含运算符的表达式。例如:
int i, j;
则
i=38
j=i
是正确的赋值表达式;而
38=i
j+i=90
则是不正确的。
2)赋值运算可连续进行,赋值运算符的结合性是自右至左结合。如:
i=j=k=120
其中有三个赋值运算符,等同于
i=(j=(k=120))
先将120赋予k,再将k的值赋予j,最后将j的值赋予i,相当于
k=120
j=k
i=j
三个赋值表达式。最终的结果是i、j和k三个变量的值都为120。
3)赋值运算符的优先级比算术运算符的优先级都低。如果在复杂表达式中需要某些赋值操作先完成,则必须加上圆括号。例如:
i=(j=12)*(k=8)
i、j、k的值分别为96、12和8。
4)赋值表达式的值就是变量的值;赋值表达式的值的类型就是变量的类型。如:
(i=120)+25.6
赋值表达式
i=120
的值为120;赋值表达式的值的类型是整型;整型数据与双精度浮点数据进行加法运算,需要进行类型转换。
如果赋值运算符右边表达式的值的类型与左边变量的类型不一致,则需要将右边表达式的值转换为左边变量的类型的值,例如:
如果
int i=85, j=7, result;
float x=2.6;
有赋值表达式
resul t=i/x+j
赋值运算符右边表达式值的类型是float型,而变量result的类型为int型,所以赋值表达式的结果类型应为int型,表达式的值为39。
5)赋值表达式是C语言表达式的一种。能以表达式形式出现在其他语句(如输出语句、循环语句等)中,例如:
printf("%d",i=j);
如果j的值为78,则输出i的值(也是表达式i=j的值)为78。在一个语句中完成了赋值和输出双重功能。
6)除了赋值运算符=外,C语言还提供了其他10个赋值运算符(复合赋值运算符):
+= −= *= /= %= >>= =<< &= |= ^=
将“运算”和“赋值”操作结合在一起作为一个复合运算符来使用。后5种是有关位运算的,将在后面的章节中介绍。
a+=56
等价于
a=a+56
而
x*=y+23
等价于
x=x*(y+23)
如果b的初值为5,赋值表达式:
b+=b−=b*b
的求解步骤为
①先进行
b−=b*b
的运算,相当于
b=b−b*b
b的值为−20。
②再进行
b+=−20
的运算,相当于
b=b+(−20)
b的值为−40。
复合运算可以简化程序,使程序精炼;也可以提高编译效率。但复合运算符降低了程序的可读性。
复合赋值运算符的优先级与基本赋值运算符的优先级相同,除了逗号运算符外,赋值运算符的优先级是最低的。各种运算符的优先级将在2.6节中介绍。
3.赋值语句
赋值表达式末尾加上分号,形成赋值表达式语句,简称为赋值语句。如:
x=numb*2;
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。