Это не имеет ничего общего с ASCII.Никто даже не упомянул ASCII.
Что предполагает этот код, так это то, что в кодировке системы все цифры отображаются в виде непрерывного диапазона от '0'
до '9'
, и поэтому при добавлении смещения к символу'0'
, вы получаете символ для соответствующей цифры.
Все кодировки символов, которые могут использоваться компилятором C или C ++, должны иметь это свойство (например, 2.3 / 3 в C ++), поэтому этот кодявляется портативным.