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

这个计算结果哪出问题了,我理解:1+2*3/4=2.5才对,会什么输出是2

#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;

}


正在回答

14 回答

将int换成double或者float就不会这样了,下章有讲解

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

int a,b,c,d;

result = a + b * c/d; 

1+2*3/4   其中运算过程因为abcd是int 型 所以运算结果(2*3----6)

(6/4--------1)取int 之后 result 为double

若运算中 b*c/d 有一为float或者double 就会自动转换 




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

定义的a b c d是int型在运算过程中也只会出现int型

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

qq_慕勒4465977

那为啥不是四舍五入然后等于3呢????
2020-02-07 回复 有任何疑惑可以回复我~
int的除法仍然是整型
0 回复 有任何疑惑可以回复我~

结果整数来的。不是float

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

"/"这个代表整除,两个整数相除后,只取整数部分,忽略小数部分

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

a = 1;

abcd 都是int类型的缘故吧 

都改成double 应该就是你预期的了

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

整数除以整数所得结果取整

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

因为第五行的double result

把变量容器result定义成了整数形式

所以第10行的{非强制转换数值类型}的赋值语句所运算出的2.5经去除小数 取整后返回出变量容器result的值为2

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

a,b,c,d都是整形,结果也是整形。

0 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消

这个计算结果哪出问题了,我理解:1+2*3/4=2.5才对,会什么输出是2

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