在int和double之间进行操作

jle*_*est 3 c math double int operand

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

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

int a = 2;
double b = 4.7;
int c = 3;
double d = 4.2;
Run Code Online (Sandbox Code Playgroud)

这是一个示例问题:

int answer1 = b+a/c-d; 
Run Code Online (Sandbox Code Playgroud)

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

(4 + 2)/(3-4)

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

Gre*_*ill 5

你的表达

b+a/c-d
Run Code Online (Sandbox Code Playgroud)

是相同的

b + (a/c) - d
Run Code Online (Sandbox Code Playgroud)

由于两个ac是整数,则商a/c使用整数除法运算.这给了2/3 = 0.那么你有:

b - d
Run Code Online (Sandbox Code Playgroud)

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