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