int main(void)
{
int x;
float y;
x=10;
y=4.0;
printf("%d\n",x/y);
return 0;
}
我使用gcc编译器编译了这段代码,运行时我得到0作为输出。 为什么此代码将输出设为0而不是2?
x / y的结果是float
并且如此转移到printf()
。
但是,你告诉printf()
使用%d
假设输入是int
。
在这种情况下,没有类型检查或自动类型转换。 printf()
将执行您的要求。由于纯粹的意外,这导致打印0。
您应该在格式字符串中指定%d
并将除法的结果强制转换为int
。
printf("%d\n", (int)(x/y) );
或者你可以使用%f
,但是你会得到2.5作为输出。 (你可能也想看看floor()函数。)
它不是分部,而是打印格式。
更改:
printf("%d\n",x/y);
至:
printf("%f\n",x/y);