Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Непонятная конструкция в Си

#c


Недавно добрался до книжки по Си Б.Кернигана и Д.Ритчи.
Не могу понять, что значит:
s[i] - '0'

При условии что:
s - массив char
i - переменная-счётчик в циле
В тексте объяснения не нашёл.    


Ответы

Ответ 1



Дело в том, что в Си тип char является числовым к нему можно также прибавлять и отнимать числа. s[i] - '0' в указанном куске кода автор использует трюк для перевода символа-цифры в число. Т.к. в кодировке символов цифры идут подряд начиная с 0, то если в s[i] содержится цифра, тогда результатом вычитания будет та же цифра, только уже в численном виде, а не в символьном. Код символа 0 это 48, код символа 7 будет 55. Соответственно 55 - 48 будет 7.

Ответ 2



В тексте объяснения не нашёл. Честно-честно? :) Как мы уже говорили в главе 1, выражение s[i] - '0' дает числовое значение символа, хранящегося в s[i], так как значения '0' , '1' и пр. образуют непрерывную возрастающую последовательность.

Комментариев нет:

Отправить комментарий