printf中的C语言计算

C language calculation in printf

#include <stdio.h>

int main(){
int x;
x = (10+20)*(1.0/2);
printf("%d", x);
return 0;
}

输出是

15

另一种形式:

#include <stdio.h>

int main(){
printf("%d", (10+20)*(1.0/2));
}

输出是

0

1.0/2在整型变量x中计算时为0.5, 但是 1.0/2printf 中用 %d 计算时 0 (我认为...)

我无法理解这种情况...

此外,当我在第二个代码中将%d更改为%f时,输出为15.000000

我在 Windows 8.

中使用 DEV C++

(10+20)*(1.0/2) 的类型是 double,但 "%d" 需要 int

因此,您需要转换为 int :

printf("%d", (int) ((10+20)*(1.0/2)));

它适用于 "%f",因为它需要 double

如前所述,您的问题是铸造问题。 因为 1.0/2 = 0.5 --> 由于 int 转换,它被转换为 0。 正确的方法是使用计算函数 - returns 一个整数,将其转换为 int (按照建议),或者在 printf.

之前进行计算