不同的数据类型的数据是不能进行运算的,计算机在对两个数字进行运算时需要将两个数转换为相同类型。
1.类型转换分类
- ? 隐式转换:编译器自动会根据变量的类型来进行转换
- ? 显式转换:需要我们自己进行转换,称之为强制类型转换? ? ??
? ? ? ? 数据类型转换格式:(数据类型)<表达式>
2.?隐式转换
- 如果一个有符号数和一个无符号数相运算,编译器会先将有符号数隐式转化为无符号数再运算,所以运算结果必为无符号数。
- 精度不同时,会先将低精度数隐式转换为高精度数再运算
3.显式转换
4.实例
输出:
?
- ?第一个输出中,a和b在运算前,b被隐式转换为了精度更高的float类型,所以运算结果为浮点型,而且f%输出的是浮点型的数据,所以,能精准输出运算结果
- 第二个输出中,由于%d只能输出四个字节精度的有符号整数,所以结果被隐形式转换为了整数。
- 第三个输出中,首先m + n的结果一定是正确的,而%d能输出四个字节精度的有符号整数,所以这个输出结果也会是正确的。
- 第四个输出中,而且上面已经说过,结果一定是正确的,由于%u只能输出无符号4个字节的整数,所以经过(补码、反码、原码)运算后,结果就是这么大(理论是这样,我没算过,感兴趣的同学可以算算)。
- 第五个输出中,从上面说到的隐式转换规则第一条我们不难知道,m + n应该为一个大于零的数,但和上面的结果一定是正确的一定正确有点矛盾,这个我也不是很理解,希望知道的朋友可以帮我解答下。
?
|