有没有人能给我一个重要而简单的解释我试图理解这个程序下面关于 c 编程中的 printf 这里是代码......
#include <stdio.h>
int main()
{
int a,b;
float c;
a = 1;
b = 2;
c = 3.;
printf("%d %d %f\n",a ,b , c);
printf("%d %f %f\n",a ,b , c);
printf("%f %d %f\n",a ,b , c);
printf("%d %d %d\n",a ,b , c);
printf("%f %d %d\n",a ,b , c);
return o;
}
输出是
1 2 3.000000
1 0.000000 0.000000
0.000000 0 0.000000
1 2 0
0.000000 0 1074266112
我非常清楚第一个 printf 的输出
但是为什么第二个 printf 输出
1 0.000000 0.000000
而不是 1 0.000000 3.000000
第三个 printf 0.000000 0 3.000000
第五个 printf 0.000000 2 0.000000
最佳答案
除第一个语句外,所有 printf()
语句的行为都是未定义。因此,您不能指望他们以任何特定方式行事。
要解决此问题,您需要将数字参数转换为 printf()
,以便它们的类型与格式说明符匹配。编译器不会自动执行此转换,尽管一些优秀的编译器会发出警告以提醒您注意错误。
关于c++ - 在 printf 上输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417153/