Я написал код для преобразования из Цельсия в градусы Фаренгейта, но результат слишком велик
Код является:
#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()
для обеспечения успеха звонка. В противном случае вы в конечном итоге будете использовать значение неинициализированной переменной.