- 程序设计基础教程:C语言
- 常东超 刘培胜 郭来德等编著
- 1138字
- 2025-02-17 17:28:15
2.5 赋值运算符和赋值表达式
在C语言中,赋值号“=”是一个运算符,称为赋值运算符,由赋值运算符组成的表达式称为赋值表达式,其形式如下:
变量名=表达式
赋值号的左边必须是某一个变量名,赋值号的右边必须是C语言中的合法表达式。赋值运算的功能是先求出右边表达式的值,然后把这个值赋给赋值号左边的变量,确切地说,是把该数据存入以该变量名为标识的存储单元中。
例如,有如下程序段:
int a,b; /*定义两个整型变量*/
a=5; /*把常量5赋给变量a*/
b=a+3; /*把a中的值加上常数3,然后赋给变量b,a中的值不变*/
在程序中可以多次给某一个变量赋值,每赋值一次,其相应的存储单元中的数据就被更新一次,存储单元中的当前数据就是最后一次所赋的那个数据。
看下面的程序段:
int a=5,b; /*定义两个整型变量,同时给变量a赋初值为5,而变量b目前的值为不确定数*/
b=a+3; /*把a中的值加上常数3,然后赋值给变量b,b中的值为8,而a中的值不变*/
【例2.7】 变量的赋初值与变量的赋值关系举例。
#include<stdio.h>
void main()
{ int a=5,b=5,c,d; /*给变量a和b同时赋初值为5,而变量c和d目前的值为随机整数*/
c=6; /*把常量6赋给变量c,这时变量c中的值为6*/
d=6; /*把常量6赋给变量d,这时变量d中的值为6*/
printf("%d,%d\,%d,%d\n",a,b,c,d); /*输出变量a,b,c,d的值*/
}
输出结果:
5,5,6,6
使用赋值表达式要注意以下几个方面:
①赋值运算符不是数学中的“等于号”,而是进行“赋予”操作。如:a=5+3 应读作“先进行5+3运算,然后把运算结果赋给变量a”。
②赋值运算符的左边只能是变量,不能是常量或表达式,而赋值运算符的右边可以是常量或表达式。如:a+3=5,a+b=c等都是不合法的赋值表达式。
③赋值表达式x=y的作用是:将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,x中原有的数据被替换掉,而变量y所代表的存储单元中的内容不变。简单地说,就是把变量y的值赋给变量x,变量y的值不变,而变量x原有的值被y的值所替换。
④可以进行连续的赋值操作,但不可以进行连续的赋初值操作。a=b=5是合法的赋值表达式,由于赋值运算符的结合方向是自右向左,因此这个表达式等价于a=(b=5),即先将5赋给变量b,再把b的值赋给变量a。
⑤赋值表达式n=n+1的含义是:取出变量n中的值加1再放回到变量n中,即使变量n中的值增1。
⑥当赋值运算符两边的类型不一致时,要进行类型自动转换。
a.实型数据(float或double)赋给整型变量时,会自动舍去小数部分,但不进行四舍五入。例如,int x=3.67,则x的值为3。
b.整型数据赋给实型变量时,数值不变,以实数形式存储到变量中。例如,float x=2,则x=2.0。
c.字符型赋予整型,由于字符型为一个字节,故将字符的ASCII码值放到整型量的低八位中,其余位补0。
d.整型赋予字符型,只把低八位赋予字符量,其余位丢失。