(int)'0'
seems to give the position of the character '0' on the ASCII table. If a
is an integer type it's assigned a corresponding ASCII value, and for it to represent an integer correctly in a string it needs to compute a difference of ASCII values.