int main(void)
{
int x;
float y;
x=10;
y=4.0;
printf("%d\n",x/y);
return 0;
}
我使用gcc编译器编译了这段代码,运行时输出为0 为什么此代码将输出设为0而不是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()函数。)