【发布时间】:2013-06-14 08:20:11
【问题描述】:
int main()
{
int a=5;
float b=7.5;
printf("%d %f\n",a,b);
printf("%d %f\n",a,a);
return 0;
}
当我在 gcc 编译器中编译时输出是
5 7.500000
5 7.500000
但是在 Visual Studio 中,输出是
5 7.500000
5 0.000000
我无法理解 gcc 编译器的输出。
【问题讨论】:
-
gcc 可能采用给定的最后一个浮点数...
-
如果转换规范无效,则行为未定义。
-
为什么visual studio输出结果int a作为浮点数是“0.0000000”?
-
我猜gcc的输出是因为它在浮点寄存器中将浮点参数传递给
printf,而整数在通用寄存器中传递,最后是在那个浮点寄存器中printf("%d %f\n",a,a);之前是b。 -
@VBB gcc 如何进行最后一次浮动?
标签: c visual-studio gcc floating-point printf