#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
中计算时, 0.5
为x
,
但1.0/2
使用0
printf
进行计算时%d
为%d
(我认为......)
我无法理解这种情况......
此外,当我在第二个代码中将%f
更改为15.000000
时,输出为{{1}}
我在Windows 8中使用DEV C ++。
答案 0 :(得分:8)
(10+20)*(1.0/2)
的类型为double
,但"%d"
需要int
。
所以,你需要施展到int
:
printf("%d", (int) ((10+20)*(1.0/2)));
它与"%f"
一起使用,因为它需要double
。
答案 1 :(得分:-2)
如前所述,你的问题是投射问题。 因为1.0 / 2 = 0.5 - >由于int转换,它被转换为0。 正确的方法是使用计算函数 - 返回一个整数,将其转换为int(如建议的那样),或者在printf之前进行计算。