c - 交叉格式说明符的 printf 输出

标签 c printf

下面的程序打印 123828749, 0.000000,但我期望打印 123828749, 123828749.0。从哪里得到 0.000000 ?

    #include <stdio.h>

    void main()

    {

        double x = 123828749.66;

        int y = x;

        printf("%d\n", y);

        printf("%lf\n", y);

    }

谢谢

最佳答案

在第二次调用 printf 时,您传递了一个 int,但格式字符串是 %lf,它需要一个浮点值被通过。这会调用未定义的行为。

如果您希望在将 y 传递给 printf 时将其视为浮点值,则需要显式转换:

printf("%lf\n", (double)y);

关于c - 交叉格式说明符的 printf 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742701/

相关文章:

c - 代码中有什么错误?

c - 如何正确更改c中char []中的元素

c - 如何在 C 中处理(设置条件并比较)有符号 float ?

c - 如何在 C 中传递 char 数组并访问它的值

c - 强制 C 文件中的所有数据都在 .text(或其他)部分

c++ - 为什么要防止 Name-mangling C 文件

c - 寻找 snprintf()-替换

c - 在 C 中连接字符串的最谨慎的方法

c++ - 理解printf格式规范中的%03.3u

ios - 打印 C 字符串 (UTF-8) 时的 NSLog() 与 printf()