c++ - 在 printf 上输出

标签 c++ c

有没有人能给我一个重要而简单的解释我试图理解这个程序下面关于 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/

相关文章:

c++ - C++ 中集合/容器的接口(interface)/父类(super class)

c++ - 使用 GetNetworkParams() 检索网络信息时出错

c - C中的数组问题

c - 带管道的非终止 C 程序

c++ - 如何避免打印 cout 语句的终端空间

c++ - 如何使用 Loki 的小对象分配器?

c++ - 在同一程序中从函数 y 内部调用函数 x,反之亦然

c++ - 使用 OpenCV 和 gstreamer 显示 RTSP 流

arrays - 为双指针的顶层分配内存

c - 在堆栈上对齐或不对齐字符数组?