C程序设计(第五版) 第三章 知识总结 3
由于第三章知识内容杂多,将分为几部分整理
四、赋值语句
(1)赋值运算符
赋值符号“=”就是赋值运算符。作用是将一个数据赋给一个变量。如:a=3
(2)复合的赋值运算符
在赋值符=之前加上其他运算符,可以构成复合运算符。
例如:a+=3 等于a=a+3 x=y+8 x=x(y+8) 注:如果右侧包含若干项的表达式,相当于它有括号。
凡是二元(双目)运算符,都可以与赋值符组合成复合运算符。有+=、-=、*=、/=、%=
(3)赋值表达式
由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”形式为:变量 赋值运算符 表达式
作用是将一个表达式的值赋给一个变量。赋值表达式具有计算和赋值的双重功能。
赋值运算符左侧是一个可修改的“左值”,左值应当为存储空间并可以被赋值的(如变量)。能出现在赋值运算符右侧的表达式称为“右值”。凡是左值都可以作为右值.
赋值表达式中的“表达式”也可以是一个赋值表达式
分析:
a=b=4+(c=6)
结果:a=10 b=10 c=6 表达式值为10 因为先执行c=6,c的值为6,再执行4+6赋值给b(算数运算符优先级大于赋值运算符),b值为10,最后执行b赋值给a,a值为10。
赋值表达式也可以以表达式的形式出现在其他语句中(输出语句、循环语句等)
(4)赋值过程中的类型转换
如果赋值运算符两侧类型一致,直接进行复制。但是如果不一致,但都是基本类型,系统会自动进行转换。
转换规则:
1.将浮点型数据赋值给整型变量时,先对浮点型取整,舍弃小数部分,赋予整型变量。
2.将整型赋值给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。
3.将一个double型数据赋值给float变量时,先将双精度转换成单精度,即只取6~7位有效数字,存储到float变量的4个字节中。注意:双精度数值的的大小不能超出float型变量的数值范围。将一个float型赋值给double型时,数值不变,有效位扩展到15位。
4.字符型赋给整型变量时,将字符的ASCII码赋给整型变量。
5.将一个占字节多的整型赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动送到被赋值的变量(发生“截断”)。
注意:要避免把占字节多的整型数据向占字节少的整型变量赋值,因为赋值后数值可能发生失真。具体溢出问题见“《C语言超出数值范围导致溢出问题原理》”
(5)赋值表达式和赋值语句
实际上,赋值语句属于表达式语句。其他一些高级语言有赋值语句而无“赋值表达式”这个概念。
在一个表达式中可以包含一个或多个赋值表达式,但绝不能包含赋值语句。
(6)变量赋初值
可以在定义变量时对变量赋初值,如:int a=3;
也可以使被定义的变量的一部分赋初值。如:int a,b,c=5;
对几个变量赋同一个值:int a=3,b=3,c=3;不可写成:int a=b=c=3;
一般变量初始化不在编译阶段完成,而在程序运行时执行本函数时赋予初值。
《C语言超出数值范围导致溢出问题原理》:http://www.sgyh.xyz/archives/68.html
引用请注明出处:http://www.sgyh.xyz/archives/71.html
仅有 1 条评论
发表新评论
- 上一篇: C程序设计(第五版) 第三章 知识总结 2
- 下一篇: C程序设计(第五版) 第三章 知识总结 4
非常牛逼