printf中的C语言计算

时间:2015-03-19 09:57:47

标签: c++ c printf operator-keyword

#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.5x, 但1.0/2使用0 printf进行计算时%d%d(我认为......)

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

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

我在Windows 8中使用DEV C ++。

2 个答案:

答案 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之前进行计算。