【C语言笔记】为什么(double)a/b和(double)(a/b)的结果不一样

C语言中,如果a和b都是整型,(double)a/b和(double)(a/b)所得到的结果是不一样的,这是运算顺序不同导致的。先上程序验证结果:

这是因为在下面代码中

c1 = (double)(a / b);

计算机会对a/b进行运算,因为a,b是int型,所以运算结果会自动转换成int型,如c0=33,接着强制转换为double型,此时系统中的值是33.000000,赋给c1,c1精确到小数点后2位,就是33.00。

但是在下面的代码中

c2 = (double)a / b;

系统会先对int型a进行强制转换,转换成double型,此时a在系统中的值为100.000000,接着除以int型b,因为double型数据长度比int型长,int型b会被系统自动转换为double,然后a和b相除,得到double型33.333333,并赋值给c2,最终c2输出到小数点后2位的结果是33.33。

对于新手来说,这应该是一个很容易犯错的点,需要注意。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式进阶行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值