int和float除以0为输出

时间:2012-07-18 14:45:36

标签: c gcc

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

  x=10;
  y=4.0;

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

  return 0;
}

我使用gcc编译器编译了这段代码,运行时输出为0 为什么此代码将输出设为0而不是2?

2 个答案:

答案 0 :(得分:7)

IT不是分部,而是打印格式。

变化:

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

为:

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

答案 1 :(得分:2)

x / y 的结果是float,并且会转移到printf()
但是,您使用printf()告诉%d假设输入为int 在这种情况下,没有类型检查或自动类型转换。 printf()只会执行您提出的问题。由于纯粹的意外,这导致打印 0

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

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

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