openlang

为什么这个 C 程序用 float 能得到正确结果,换成 double 却总是输出零?

使用 float 时,我的程序是这样的。

#include <stdio.h>

int main() {
    float result;
    float input;
    scanf("%f", &input);
    result = input / .25;
    printf("%f", result);
    return 0;
}

输入数值 3,输出就是 12.000。但把 float 换成 double 后,结果却始终是 0.000。我是不是漏掉了什么?

从英语翻译查看原文

后续讨论 2

顺着彼此的依据读下去
  1. 固定链接

    关于读取 double 的这个问题 (https://stackoverflow.com/questions/33269283/scanf-not-reading-in-double) 已经解释过,

    你向编译器提供了错误信息。读取输入时,%f 表示你会传入指向 float 的指针。而你实际传入的却是指向 double 的指针。

    要么改成 %lf,要么把输入变量声明为 float。

    注意,printf 的格式规则有所不同,float 和 double 参数都可以使用 %f。这是因为参数会提升为 double,而不是作为指针传入。

    从英语翻译查看原文

同一个问题的其他角度

  1. 怎样继承另一个类里面的类?

    你好, 在一个我无法修改代码的包里,类的层次结构如下。 我想给 Inner 加个方便使用的包装,但因为 Inner 依赖外层实例,目前只做到把它放进外层类的子类里面。 可惜,在多个地方继承 Outer,就意味着每个新子类里都得重复这个方便使用的 ca…

    回复 1最近活动 scala
  2. 比较 Lean4 中的 have 和 let 绑定

    我发现下面两个表达式 以及 行为完全相同。证明定理时也是这样。 它们可以互换吗?区别在哪里?

    回复 3最近活动 lean-4
  3. 初始化以字符串数组为值的 TypeScript Map

    我在创建一个 Map,其中每个条目都保存字符串数组。怎样在一条语句中同时声明类型并完成初始化? 我(天真地)这样试了一下。 结果是下面这个错误。

    回复 2最近活动 typescript