Я пытаюсь прочитать целое число с помощью getchar(). Это код, я использую:Чтение целых чисел с getchar()
while (thisChar = getchar() != '\n') {
n = n * 10 + thisChar - '0';
}
int n
инициализируется нулем и thisChar
объявлен как int
Для одного ввода цифры, п возвращается в -47, что означает значение символа для start of heading
читается первым. Есть ли что-то неправильное в отношении того, как я назначаю thisChar
в выражении while
?
Upvote. 'thisChar - '0'' может быть' 1 - 48', что объясняет OP '-47' для одной цифры. –
@WeatherVane, если thischar имеет тип 'int', что нужно использовать' - '0' '? – roottraveller
@ rkm_Hodor, потому что он читает числовые символы ''0' .. '9'', которые не имеют этого * значения *. Поэтому вы вычитаете ''0'' для получения целочисленного диапазона' 0..9'. В ASCII (который является общим, но не всегда используется), числовые символы ''0' .. '9'' имеют значения' 48..57'. –