Why does subtracting '0' in C result in the number that the char is representing?

c, c++, digits

Solution

Because the char are all represented by a number and '0' is the first of them all.

On the table below you see that:

'0' => 48
'1' => 49


'9' => 57.

As a result: (`'9'` - `'0'`) = (57 − 48) = 9

Source: http://www.asciitable.com

Problem

Can someone explain why this works? ``` char c = '9'; int x = (int)(c - '0'); ``` Why does subtracting '0' from an ascii code of a char result the number that that char is representing?

Original source