用double声明了一个变量后无论输入任何数据返回值都为0.0000

img


为啥用double不行,但是float可以,两个不都是浮点数类型嘛

你scanf输出类型搞错了,应该是:

scanf("%lf",&x);

我还是一名小学生,比较擅长C和C++,有啥可以问我,我尽力回答

double对应的是 %lf
float 才是 %f

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7574257
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:实型数据double和float的输入与输出
  • 除此之外, 这篇博客: float和double的存储格式中的 首先要理解数据存储究竟是怎么回事,以int和short为例。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    对于short而言,一共16 位,高位为符号位。
    对于 int 而言,一共32 位,高位为符号位。
    也就是说对于1而言:
    short: 0000000000000001
    int : 00000000000000000000000000000001
    符号位均为0表示正数。

    对于负数而言,就是符号位为1,其它位为该值的补码(取反加一就是补码)。
    也就是说对于-1而言:
    short: 1111111111111111
    int : 11111111111111111111111111111111

    所以short的范围为-32768~32767;
    最小为:1000000000000000
    最大为:0111111111111111

    int的范围为-2147483648~2147483647
    最小为:10000000000000000000000000000000
    最大为:01111111111111111111111111111111

    知道有符号数了,无符号数就更加简单了,第一位也算有效位,没有补码运算(因为没有负数)。例如:
    unsigned short
    最大为1111111111111111最小为0000000000000000
    无符号short范围:0~65535
    unsigned int
    最大为11111111111111111111111111111111
    最小为00000000000000000000000000000000
    无符号int范围为:0~4294967295


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^