为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样运行出来结果是2.000000

#include <stdio.h>
int main()
{
    int a,b,c,d;
    double result;
    a = 1;
    b = 2;
    c = 3;
    d = 4;
    result = a*b-c/d;    //在这里体验哦~
    printf("%f\n", result);
    return 0;
}

正在回答

3 回答

因为a,b,c,d都是int型数据,计算过程中a*b是1*2=2,c/d是3/4=0.75,int类型数据只取整数即c/d=0,所以a*b-c/d=2-0=2,计算结果2由int型转换为double型得到2.000000


1 回复 有任何疑惑可以回复我~

这个不应该算出来是 四分之五嘛 double型的话不应该输出 1.250000 嘛为什么是2   ???

0 回复 有任何疑惑可以回复我~
#1

慕少6166303

好了 明白了。。。如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000。
2020-11-21 回复 有任何疑惑可以回复我~
#2

weixin_慕后端4364804

应该是abcd定义为整数型,虽然结果result定义为double,但计算过程中除法出现的小数还是属于整形的会被计算为0
2022-11-30 回复 有任何疑惑可以回复我~

因为你用的是double双精度浮点型,

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这样运行出来结果是2.000000

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信