c语⾔将表达式的值赋给变量,赋值表达式和赋值语句
1.赋值表达式
1.1赋值运算符
赋值符号“=”就是赋值运算符,它的作⽤是将⼀个数据赋值给⼀个变量,也可以将⼀个表达式的值赋值给⼀个变量。
1.2复合的赋值运算符浮点型变量float
在赋值符“=”之前加上其他运算符,可以构成复合的运算符。如:+=,-=,*=,/=,%=。采⽤这种复合运算符,⼀是为了简化程序,使程序精炼,⽽是为了提⾼编译效率,能产⽣质量较⾼的⽬标代码。
接下来在代码中演⽰“+=”的⽤法,代码如下:
1.#include
2.void main()
3.{
4. int a,b;
5. a=1;
6. b=2;
7. b+=a;
8. printf("b=%d\n",b);
9. printf("\n");
10.
11. a=1;
12. b=2;
13. b=a+b;
14. printf("b=%d\n",b);
15.}
输出结果如下图:
程序中第5,6,11,12⾏为a,b赋予初值,使它们的初始状态保持相同。第7⾏语句为b+=a;,第13⾏语句b=a+b;,它们的输出结果均为b=3,由此可推得b+=a和b=a+b的作⽤是相同的,所以这两条语句是等价的。
1.3赋值表达式的写法由赋值运算符将⼀个变量和⼀个表达式链接起来的式⼦成为“赋值表达式”。⼀般形式为:
变量 赋值运算符 表达式
2.赋值过程中的类型转换
如果赋值运算符两侧的类型⼀致,则直接进⾏赋值,如i=6;,如果赋值运算符两侧的类型不⼀致,但都是数值型或字符型是,在赋值时要进⾏类型转换。类型转换是由系统⾃动进⾏的。转换的规则是:
(1)将浮点型数据赋值给整型变量时,先对浮点型数取为整,然后赋予整型变量。如i为整型变量,执⾏“i=3.56”的结果是使i的值为3。
(2)将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中,如将23赋值给float变量f,先将23转换成23.00000,再存储到f中。
(3)将⼀个double型数据赋给float变量时,截取其前⾯7为有效数字,⼨放⼤float变量的存储单元中。但应注意数值范围不能溢出。
(4)字符型数据赋给整型变量时,将ASCII码赋值给整型变量。如:i='a';,复制后i的值为97。
(5)将⼀个占字节多的整型数据赋给⼀个占字节少的整型变量/字符变量,只将其低字节原封不动地送到该变量。
(6)将有符号整型赋值给长度相同的⽆符号整型变量时,按字节原样赋值。有符号数字赋值给⽆符号数据类型变量,数据会失真,如下:
1.#include
2.void main()
3.{
4. unsigned a;
5. int b;
6. b=-1;
7. a=b;
8. printf("%u\n",a);
9.}
执⾏结果如下图:
整型变量a的数值为2^32-1。
(7)将⽆符号整型数据赋值给长度相同的有符号整型变量时,应注意不要超过有符号整型变量的数值范围。
1.#include
2.void main()
3.{
4. unsigned a;
5. int b;
6. a=4294968295;
7. b=a;
8. printf("%d\n",b);
9.}
执⾏结果如下图:
最后的输出结果与赋值结果不相同,是由于超过了边界。
3.赋值语句
赋值语句是由赋值表达式加上⼀个分号构成。在C语⾔中赋值号“=”是⼀个运算符,在其他⼤多数语⾔中赋值号不是运算符。要区分赋值表达式和赋值语句。赋值表达式可以包括在其他表达式中,例如:if((a=b)>0)t=a;,a=b是⼀个赋值表达式,t=a;,是⼀个赋值语句。
4.变量赋初值
程序中常需要对⼀些变量预先设置⼀个初值。既可以⽤赋值语句去实现,也可以在定义变量的同时使变量初始化,后者更⽅便。例如:int
a=1;。也可以使被定义的变量⼀部分赋初值,例如:int a,b,c=5;。如果对⼏个变量赋同⼀个初值,应写成:int
a=3,b=3,c=3;表⽰a,b,c的初值都为3。不能写成int a=b=c=3;。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。