@amalchikov

Какой результат будет?

В учебнике встретил часть кода:
char vlstr[SZ];
........
int k=vlstr[j]-'0';

Что будет записано в переменной к?
  • Вопрос задан
  • 155 просмотров
Решения вопроса 2
@abcd0x00
Это вычисление в наборе ASCII.
У каждого символа в наборе есть свой позиционный номер (нумерация с нуля).
В ASCII символы 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 идут по порядку, поэтому и их числовые коды идут по порядку - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57.
Какой бы цифровой символ мы не взяли, его значение в числовом виде можно узнать, отняв от его позиции позицию нуля.

Большинство компиляторов базируются на таблице ASCII, но это нигде не закреплено. Если компилятор будет базироваться на другой таблице, то этот код может не сработать, если в ней цифры стоят не рядом или вообще идут не по порядку.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Обычно такую конструкцию используют для преобразования числа из строкового представления в числовое. Например функции типа atoi как раз используют такой подход.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы