Why the ASCII value of a digit character is equal to the value plus '0'?

前端 未结 5 850
挽巷
挽巷 2020-12-11 19:16

Why when we want to convert an ASCII value of a digit into an integer, we need to do:

value - \'0\' ?

And the other way around, to convert Integ

5条回答
  •  感动是毒
    2020-12-11 19:55

    Because the integral values of the digit characters are guaranteed by the C standard to be consecutive.

    Therefore '1' - '0' == 1, '2' - '0' == 2, etc. from which you can infer that your formulas really do work.

    Sidenotes:

    1. Since this is guaranteed by the standard, it works even if the target platform does not use ASCII.
    2. Conversely, if the standard did not mandate this (it does not do so with the values of the letters) then this technique would not be portable; it would be dependent on the target system using ASCII.

提交回复
热议问题