为什么 short s = 1 不报错

1int 类型,为什么 short s = 1 不报错,而 1.1double 类型 float f = 1.1 却报错?

阅读 3.8k
1 个回答

因为int如果超了short范围,会被截取低位部分,没超会正常赋值.

但double类型是不可预测的,可能很简单的数字都占满了所用的字节,比如:0.5,在内存中其实表示为:0.499999999999
这样的数字截取低位部分就是另一个数字了,这显然不能容许.所以float赋值小数必须加标记,便于编辑器在编译期间检查.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题