Possible Duplicate:
Char to int conversion in C.
I remember learning in a course a long time ago that converting from an ASCII char to an int by subtracting ‘0’ is bad.
For example:
int converted;
char ascii = '8';
converted = ascii - '0';
Why is this considered a bad practice? Is it because some systems don’t use ASCII? The question has been bugging me for a long time.
While you probably shouldn’t use this as part of a hand rolled
strtol(that’s what the standard library is for) there is nothing wrong with this technique for converting a single digit to its value. It’s simple and clear, even idiomatic. You should, though, add range checking if you are not absolutely certain that the givencharis in range.It’s a C language guarantee that this works.
5.2.1/3 says:
Character sets may exist where this isn’t true but they can’t be used as either source or execution character sets in any C implementation.