2014-09-02 63 views
3

我在基本C中做了一项家庭作业,要求我计算某些表达式,然后在程序中检查我的答案。我似乎无法得到任何回答这些问题由我自己计算正确的...在int和double之间执行操作

他们要我用这些变量来解决数学问题:

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。这是我作业中最简单的问题,我不知道。请帮忙!

+4

首先,“据我所知,因为它有一个int操作数,那么所有的变量转换为一个整数“ - 这已经不是真正的。其次,你的C表达式'b + a/c-d'没有大括号。你的数学表达式'(4 + 2)/(3-4)'有大括号。为什么区别? – AnT 2014-09-02 21:14:13

+0

好吧,我现在觉得很愚蠢。那么最终答案是唯一被转换为整数的东西吗?看起来我应该事先拿一个数学课来复习哈哈。谢谢你的帮助! – jlest 2014-09-02 21:19:40

回答

5

你的表达

b+a/c-d 

相同

b + (a/c) - d 

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

b - d 

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

+0

啊!现在我明白我出错的地方了。我想我需要在操作的基本顺序上进行一些审查。感谢您提供清晰! – jlest 2014-09-02 21:22:32