数据类型转换特例
数据类型转换特例
1、例:以下有什么区别?

f1是通过double类型进行强制类型转换过来的;
f2本身就是一个float类型
2、例:如图所示,代码是否有问题?为什么?
!
该代码b = b1 + b2;有问题,输出有错误。
变量相加,首先看类型问题,最终把结果的赋值也会考虑类型问题,因为byte,short,char他们参与运 算首先会转换为int类型。
原因:在b = b1 + b2;中,首先,b1会转为int类型,b2也会转为int类型,而b是byte类型,用byte类型来 接收int类型,是不可取的。
如图:
当b=3+4;的时候,语句是正确的。
常量之间相加,首先会做加法运算,然后看这个结果是不是在接收数据类型的范围内,如果在,就直接赋 值,不会报错。
3、例:

分析:我们想知道输出结果是什么,就得明白计算机内部是如何计算的。我们知道计算机中的数据都是通过 补码进行的,想要得到补码,就必须知道反码、原码,想要得到原码,就必须知道对应的二进制
(1)计算出130这个数据的二进制,整数默认是int类型,占4个字节
通过8421码得到130的原码:00000000 00000000 00000000 10000010
因为130是正数,所以反码和补码都与原码相同。
(2)计算机内部强制类型转换,做了截取操作,结果只剩下10000010,这个结果是补码
(3)已知补码10000010,求反码以及原码:

(4)把原码1111110换算成十进制
64+32+16+8+4+2=126
由于符号位是1,所以结果为-126

浙公网安备 33010602011771号