每当使用除法时,C程序中的计算总是导致0

Ali*_*Ali -1 c math

我正在使用两个不同的变量来计算与来自int和的变量double.当我使用类似的东西时,这些工作正常:

int cost
cost = 40;
cost = (cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)

为此,该方法工作正常,我得到了正确的结果4,但是当我使用变量cost并将其放在标题中时,如:

#define cost 40
int total_cost;
total_cost = (cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)

这总是导致0我,我不知道为什么.即使我用printf%d还是%f这仍然给我的结果0.

Mys*_*ial 6

你正在做整数除法 - 它向下舍入.

因此:

cost / 400
Run Code Online (Sandbox Code Playgroud)

返回零,因为cost = 40并向下40 / 400舍入为零.

你应该做的是使用浮点类型double.

编辑:

double cost
cost = 40;
cost = (cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)

#define cost 40
double total_cost;
total_cost = ((double)cost / 400) * 20 * 2;
Run Code Online (Sandbox Code Playgroud)