2
int main(void)
{
  int x;
  float y;

  x=10;
  y=4.0;

  printf("%d\n",x/y);

  return 0;
}

我使用 gcc 编译器编译了这段代码,运行时我得到 0 作为输出。
为什么这段代码输出为 0 而不是 2?

4

2 回答 2

7

这不是部门,而是打印格式。

改变:

printf("%d\n",x/y);

到:

printf("%f\n",x/y);
于 2012-07-18T14:48:14.533 回答
2

x/y的结果是 afloat并按原样传输printf()
但是,您告诉printf()using%d假设输入是int.
在这种情况下,没有类型检查或自动类型转换。printf()只会执行你所要求的。这纯属意外,导致打印0 。

您应该%d在格式字符串中指定并将除法的结果转换为int.

printf("%d\n", (int)(x/y) );

或者你可以使用%f,但是你会得到2.5作为输出。(您可能也想看看 floor() 函数。)

于 2012-07-18T14:54:55.403 回答