混合运算
缺省事实1
一个十进制小数换算成二进制时可能会变为无限小数,为了不损失精度,计算机默认将float常量转换为double常量处理。
缺省事实2
对于整型常量,计算机会根据其大小,默认作为对应的有符号型整数来处理。
混合运算时,系统会自动转换成同一类型计算。(在编译时已完成)
横向必转,纵向从下到上,本来就是同类型数据之间无需转换。
【注意:
- +. -. *. /运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算;
- 若int型与float或double型数据进行运算,先将int型和float型转换为double型,然后进行运算,结果为double型;
- Char型与int型数据进行运算,就是把字符的ASCII码与整型数据进行运算;
如:12+‘A’=12+65=77
————————————————
版权声明:本文为CSDN博主「Fengjingdisan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengjingdisan/article/details/76358642
此段转载于博主Fengjingdisan】
陷阱
整数除整数答案也是整数,答案是0.
unsigned int - unsigned int =unsigned int
后缀
警告是因为机器把0.2当成double(8)来处理,把0.2放进float(4)里等于只有前六或七位是有效数字。
原本计算机按照double处理的,加了后缀后按照后缀的常量处理。(后缀尽量大写)
限制0.2只能是float型常量,左右匹配,就不会出现警告。
不是等于0.0000是因为第一行的1.2是double型切断放进float型,第二行的1.2是double型,float-double和同类减同类等于零不一样,所以不是0.0000。
图片截取自中国慕课零基础学C语言