3

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

4

2 回答 2

5

你的表情

b+a/c-d

是相同的

b + (a/c) - d

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

b - d

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

于 2014-09-02T21:17:10.180 回答
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/

于 2014-09-02T21:17:26.060 回答