Я написал код для преобразования из Цельсия в градусы Фаренгейта, но результат слишком велик

Код является:

#include <stdio.h>
#include <stdlib.h>

int main() {
    double C, F;
    printf("Enter the temperature in Celisius: ");
    scanf("%f", &C);
    F = 32 + (C * (180.0 / 100.0));
    printf("%f C = %f F\n", C, F);
    system("pause");
    return 0;
}

Выход:

Введите температуру в градусах Цельсия: 100
-92559604910177974000000000000000000000000000000000000000000000.000000 C = -166607288838320360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 F

1 ответ

Решение

Вы получили неверный спецификатор конверсии double за scanf(), Вам нужно использовать

  scanf("%lf", &C);

Чтобы добавить соответствующую цитату, из C11глава §7.21.6.2

l (ELL)

Указывает, что следующий d, i, o, u, x, X, или же n спецификатор преобразования применяется к аргументу с указателем типа на long int или же unsigned long int; что следующее a, A, e, E, f, F, g, или же G спецификатор преобразования применяется к аргументу с указателем типа на double; или что следующее c, s, или же [ спецификатор преобразования применяется к аргументу с указателем типа на wchar_t,

Тем не менее, вы должны проверить возвращаемое значение scanf() для обеспечения успеха звонка. В противном случае вы в конечном итоге будете использовать значение неинициализированной переменной.

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