首页 > 解决方案 > 使用 printf 时出现意外的双值输出

问题描述

#include <stdio.h>
int main()
{
    double  a=7.1;
    printf("%d",a);
    return 0;
}

输出:

1717986918

当我编写这个程序并在方法中使用签名格式说明符时printf()。为什么我得到这个值?

标签: cfunctionintegersigned

解决方案


它是格式说明符问题。
使用"%d",编译器被告知正在打印的数据类型是 type int,但变量是 type float,导致未定义的行为,在这种情况下导致 value 1717986918

类型的格式说明符float"%f",不是"%d"

改变这个:

printf("%d",a);

对此:

printf("%f",a);

如果您-Wall在编译器设置中使用或等效编译,则会发出警告通知您。


推荐阅读