C程序设计语言
上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;

⑤ 在变量说明中给变量赋初值和在赋值语句中赋值是不同的。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其他同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。