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