C语言给出一个浮点数默认是double型,为什么可以把3.14赋给float的变量

如题所述

第1个回答  2020-03-06
C语言可以把double类型的成员赋给float类型,但精度会损失
因为C语言对同种且不同长度的类型是没有检查的
比方说,把long型的整数赋给int类型也是可以的,但后果自负(有可能造成数位丢失或数不准确)
还有把unsigned型的整数赋给int也可以,但二进制最高位为1时存储的值将不是你先前unsigned类型的值
比方说,TurboC当中,int类型的范围是-32768至32767
如果你使用
int
a=32768,不会报错,但a的值将是-32768
(二进制1000000000000000)
Java和C#正是因为看到了这些缺陷,所以加了这种检查
相似回答