int i = 12;
char myChar = '4';
WriteLine(i + myChar);
//64因为ASCII '4' = 52
WriteLine(i + myChar - '0');
//将是16,这是我想要的。为什么我应该使用-'0'
将数字字符'0'
转换为'9'
,将数字值0
转换为9
,减去'0'
。
这总是有效的,因为C定义了字符'0'
到'9'
是顺序编码的。
// v----------v Arithmetic value of digit character.
WriteLine(i + myChar - '0');
即使字符不是用ASCII编码也可以。
int i = 12;
char myChar = '4';
WriteLine(i + (int)myChar);
Ascii值'0'
从48
开始,如您所知,'4'
是52
。如果用4减去0就得到整数4的值,因为在ASCII表中,值增加+1的频率。
价值观:
'0' = 48
'1' = 49 {'1' - '0' == 49-48 == 1}
'2' = 50 {'2' - '0' == 50-48 == 2}
...
...
每次你减去'0'等于48你就会得到字符串number的真实值