No. The ASCII value of '0' is actually 48:
ASCII Table / Extended ASCII Codes
'9' is 57. If you don't understand what the ascii table is about, ask.
So that code could be written:
Code:
if (c >= 48 && c <= 57)
++ndigit[c-48];
Thus c-48 will be between 0 and 9. ++ means to increment that value in the array by one. Here it is in front of the variable, meaning "pre-increment" (increment before the value is used in the statement context). Since there is no statement context, it means the same as
ndigit[c-48]++.