c - 在C中简单使用双数的printf和scanf的问题

标签 c

我做了一个非常简单的程序:

#include <stdio.h>
int main()
{
    double x;
    printf("Write your number \n");
    scanf ("%f", &x);
    printf("You've written %f \n", x);

    return 0;
}

结果出现了奇怪的数字(无论我给出什么 x): “你写了 8309626105313258000000000000000000000000000000000000000000

这是怎么回事?当我将所有数字更改为“int”类型时,该程序工作正常。

最佳答案

看看在启用警告的情况下编译它时会发生什么:

amb@nimrod-ubuntu:~/so$ gcc -Wall x.c -o x
x.c: In function ‘main’:
x.c:6:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat]

%f 更改为 %lf 并且 scanfprintf 函数将正确地接受

关于c - 在C中简单使用双数的printf和scanf的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577194/

相关文章:

c - linux 用户空间中的非阻塞计时器(C 语言)

c - snprintf 和 strncat 的执行速度如何比较?

c++ - 最简单的 QT TCP 客户端

c - 获取当前目录的名称(不是路径)

c - D3DKMTOpenAdapterFromDeviceName 和 DeviceName

c++ - 带有可选字段的 ASN.1 编码

C - 比较并将 char* 转换为 char

c - 设置动态分配数组的值

c - struct Complex (*ptr1)[4] 和 struct Complex *ptr1 之间的区别

c - 如何从 C 调用 MATLAB 代码?