C语言类型转换

不同的数据类型的数据是不能进行运算的,计算机在对两个数字进行运算时需要将两个数转换为相同类型。

1.类型转换分类

  •   隐式转换:编译器自动会根据变量的类型来进行转换
  •   显式转换:需要我们自己进行转换,称之为强制类型转换      

        数据类型转换格式:(数据类型)<表达式>

2. 隐式转换

  • 如果一个有符号数和一个无符号数相运算,编译器会先将有符号数隐式转化为无符号数再运算,所以运算结果必为无符号数。
  • 精度不同时,会先将低精度数隐式转换为高精度数再运算

3.显式转换

  • 也就是强制类型转换

4.实例

输出:

 

  •  第一个输出中,a和b在运算前,b被隐式转换为了精度更高的float类型,所以运算结果为浮点型,而且f%输出的是浮点型的数据,所以,能精准输出运算结果
  • 第二个输出中,由于%d只能输出四个字节精度的有符号整数,所以结果被隐形式转换为了整数。
  • 第三个输出中,首先m + n的结果一定是正确的,而%d能输出四个字节精度的有符号整数,所以这个输出结果也会是正确的。
  • 第四个输出中,而且上面已经说过,结果一定是正确的,由于%u只能输出无符号4个字节的整数,所以经过(补码、反码、原码)运算后,结果就是这么大(理论是这样,我没算过,感兴趣的同学可以算算)。
  • 第五个输出中,从上面说到的隐式转换规则第一条我们不难知道,m + n应该为一个大于零的数,但和上面的结果一定是正确的一定正确有点矛盾,这个我也不是很理解,希望知道的朋友可以帮我解答下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值