int和float除以0为输出

问题描述 投票:2回答:2
int main(void)
{
  int x;
  float y;

  x=10;
  y=4.0;

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

  return 0;
}

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

c gcc
2个回答
2
投票

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

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

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

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


7
投票

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

更改:

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

至:

printf("%f\n",x/y);
© www.soinside.com 2019 - 2024. All rights reserved.