openlang

Почему замена float на double заставляет эту программу на C всегда печатать ноль, хотя с float получается правильный результат?

С 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. Ссылка на ответ
    #include <stdio.h>
    
    int main() {
        double result;
        double input;
        scanf("%lf",&input);
        result=input/.25;
        printf("%lf",result);
        return 0;
    }

    Здесь нужно выбрать спецификатор формата именно для double, то есть %lf.

    Спецификации строки формата (https://en.wikipedia.org/wiki/Scanf_format_string#Format_string_specifications) подробнее описывают доступные спецификаторы.

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Как объясняется в этом вопросе о вводе double (https://stackoverflow.com/questions/33269283/scanf-not-reading-in-double),

    Вы сообщили компилятору неправду: при вводе %f обещает указатель на float. На самом деле вы передали указатель на double.

    Либо замените формат на %lf, либо объявите входную переменную как float.

    Обратите внимание, что правила формата у printf другие: он принимает %f для аргументов как float, так и double. Это работает, потому что аргументы повышаются до double, а не являются указателями.

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как унаследовать класс внутри другого класса?

    Здравствуйте, В пакете, код которого я не могу менять, есть такая иерархия классов: Я хочу добавить удобную обёртку вокруг In…

    Ответы 1Последняя активность scala
  2. Сравнение привязок have и let в Lean4

    Я заметил, что эти два выражения и ведут себя одинаково. То же происходит при доказательстве теорем. Они взаимозаменяемы? В ч…

    Ответы 3Последняя активность lean-4
  3. Инициализация TypeScript Map со значениями в виде массивов строк

    Создаю Map, в котором каждая запись содержит массив строк. Как одновременно задать его тип и инициализировать одним выражение…

    Ответы 2Последняя активность typescript