> Technically, using gint won't guarantee anything either, but this is all very theoretic. If you think it's confusing, I'll just get rid of it.

Yeah OK, since `int` is only guaranteed to be a 16bits signed integer, *if* `char` is 8bits unsigned, `int` is only 16bits signed, *and* `'9'` is greater than `0xfd` it could be a problem.  What about `long`? :D
But yeah, I think it's more confusing than helpful.  if you think it's worth checking though, add a note in the comment *why* checking for that.

> The '0' < ... < '9' thing is actually guaranteed by the C standard.

Oh, good, didn't remember.