программная реализация функции atoi

249
20 марта 2018, 01:54

в теме по ссылке Реализация функции atoi для меня кое что неясно: зачем от текущей ячейки s[i] отнимать символ '0'? И можно ли фильтр содержимого сделать как нибудь иначе?

n = (n * 10) + (s[i] - '0');

Если n*10 необходимо для формирования разрядности числа (я ведь прав?), то с этим действием (s[i] - '0') не всё ясно. Пожалуйста вкратце объясните.

Answer 1

Потому что код символа '0' не равен 0.

И чтобы получить численное значение из символа '0' - вычитаем этот '0'. А поскольку символы 0-9 идут подряд, вычитание '0' из символа десятичной цифры дает ее значение.

READ ALSO
c++ how to multisets? [требует правки]

c++ how to multisets? [требует правки]

c++ how to get multiset which is the difference of two others multisets?

184
QValidator для QLineEdit

QValidator для QLineEdit

Какие нужно сделать условия, чтобы в виджете QLineEdit при написании текста, а затем при нажатии на кнопку принятия ("ОК"), были подходящими только...

214
ошибка :бинарный “==”: не найден оператор

ошибка :бинарный “==”: не найден оператор

Писала программу для сложения/ вычитания/умножения матриц в которые надо было посылать разные типыДля int все работало float, но надо было ее добавить...

244