C99 standard on c >= '0' && c <= '9'
c >= '0' && c <= '9'
(mentioned in another answer) works because C99 N1256 standard draft 5.2.1 "Character sets" says:
In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.
ASCII is not guaranteed however.