在int和double之间进行操作

时间:2014-09-02 21:12:02

标签: c math int double operand

我在基本C中有一个家庭作业,要求我计算某些表达式,然后在程序中检查我的答案。我似乎无法通过自己的计算得到任何这些答案......

他们希望我使用这些变量解决数学问题:

int a = 2;
double b = 4.7;
int c = 3;
double d = 4.2;

以下是一个示例问题:

int answer1 = b+a/c-d; 

据我所知,因为它有一个int操作数,所以所有的变量都转换成一个整数,所以它应该看起来像我想的那样:

(4 + 2)/(3-4)

当我手动操作时,我得到-6作为我的答案,但是当我输入它作为代码时,它给出了0的答案。任何人都可以解释这个吗?我做的操作顺序错了吗?我根本不明白计算机是如何得到0的。这是我作业中最简单的问题,我没有任何线索。请帮忙!

2 个答案:

答案 0 :(得分:5)

你的表达

b+a/c-d

相同
b + (a/c) - d

由于ac都是整数,因此使用整数除法计算商a/c。这给了2/3 = 0。那么你有:

b - d

这是使用浮点计算的,因为bddouble。结果为0.5,当分配给结果int时,将被截断为0。

答案 1 :(得分:1)

您的操作顺序有点偏差:

int answer1 = b+(a/c)-d; 

int tmp1 = a/c; ---> 2/3 --> 0
int answer1 = 4.7 + 0 - 4.2 ----> 0.5 --> 0

http://www.cplusplus.com/doc/tutorial/typecasting/