C++0x printf() 为 double 打印错误的值

标签 c++ c++11 printf double

今天我尝试使用 %lf 说明符通过 printf 函数打印一个 double 值,但我得到了 0.000000。但是当我尝试使用 %f 说明符打印相同的内容时,我得到了正确的输出。为什么会这样?我使用 c++0x(我认为是 c++11。)

#include<stdio.h>

int main()
{
    double aaa;
    aaa=1.23;
    printf("%lf\n",aaa);
    printf("%f\n",aaa);
    return 0;
}

enter image description here

最佳答案

也许这个答案并不完全正确,但根据 this reference ,看起来 %llong int 的长度说明符,而 %ffloat 的说明符。也许在过去这可以打印浮点变量,但我猜你的代码试图将 double 变量 aaa 视为 long int,并将 0 打印为结果。

关于C++0x printf() 为 double 打印错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35208327/

相关文章:

c++ - 仅获取整数作为输入,代码未按预期工作

c++ - 使用野指针时在给定位置执行失败的原因,而不是更早?

c++ - 如何将 QGraphicsItem QList 保存到文件然后读取它? Qt C++

c++ - 为什么我不能像这样初始化结构?

c++ - 实现一个动态数组(我可以访问不存在的位置)

php - 当使用错误的类型或错误的参数数量调用 vsprintf 时,有没有办法捕获?

c - 从多维数组中提取时序并写入c中的文件

c++ - 背诵和提示输出对齐 C++,输出格式

c++ - constexpr 未定义行为

c - 如何使用 gcc 编译器 tricore v3.4.6 在 C 中 printf a sint32?