上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.2 赋值语句
赋值语句由赋值表达式加上一个分号构成,是用于实现计算和赋值的一类最基本的语句,其一般形式如下:
可赋值对象v=表达式e;
其中,v是变量和数组元素等可赋值对象的标识符,“=”是赋值运算符,e是表达式。
有时,也把复合赋值运算符看做赋值运算符,因而把符合赋值运算表达式构成的语句看做赋值语句。例如,可把“x +=10;”看做赋值语句。
赋值语句执行时,系统将先计算出“=”右边表达式e的值,然后将该值赋给“=”左边的变量v。例如,以下赋值语句:
x=-x;
的执行过程为:
① 求变量x的相反数;
② 将求得的x的相反数赋给变量x。
在赋值语句的使用中需要注意以下几点。
① 如果赋值运算符两边的类型不一致,则系统在算出表达式的值之后,先将该值转换为左边变量的类型,然后再赋值给左边的变量。例如,假设变量x已经声明为整型,则
x=3.45;
的执行过程为:先将实型数3.45转换为整型数3,再将整型数3赋给整型变量x。
② 由于在赋值运算符“=”右边的表达式可以又是一个赋值表达式,因此:
变量=(变量=表达式);
是成立的,从而形成嵌套的情形。其展开之后的一般形式为:
变量=变量=…=表达式;
例如:
a=b=c=50;
按照赋值运算符的右结合性,实际上等价于:
c=50; b=c; a=b;
③ 赋值表达式和赋值语句是有区别的。赋值表达式可以出现在任何允许表达式出现的地方,而赋值语句则不能。例如:
y=fabs(x=sin(x)/x);
是合法的,该语句的功能是计算sin(x)/x并赋值给x,再取x的绝对值赋给y。而
y=fabs(x=sin(x)/x;);
是非法的,因为“x=sin(x)/x;”是语句,不是表达式,不能作为函数fabs的参数。
④ 在变量说明中,不允许连续给多个变量赋初值。例如:
int a=b=c=50;
是错误的,必须写成:
int a=50,b=50,c=50;
⑤ 在变量说明中给变量赋初值和在赋值语句中赋值是不同的。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其他同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。