代码:
shortx=-4321;
unsignedshorty=(unsignedshort)x;
可以发现,机器码一样,但x,y作为不同类型,解释的值不一样。
2.其次看下由长变短的强制类型转换。
intx=-4321;
shorty=(short)x;
这是由32位的int型,强制转换为16位的short型,结果如下
可以看出:高位直接阶段,低位直接赋值。
3.再次看下由短变长的强制类型转换。
shortx=4321;
inty=(int)x;
这是由16位的short型,强制转换为32位的int型,结果如下
可以看出:低位直接赋值,高位扩展为短字长的符号位(0为正,1为负)
总结:对于常数也是一样,强制类型转换的作用是把原有类型的机器数值解释为目标类型,所以是有重要意义的。