C语言中字符型数字转整数:为何用字符减'0'实现?
为什么数字字符减去
'0'能得到对应整数? 先看你贴的这段代码:
char character = '7'; int integerChar = character - '0';
它的核心逻辑其实很简单,关键在于两点:
- 字符的本质是编码值:
char类型存储的是字符对应的编码数值(比如常见的ASCII编码里,'0'对应48,'7'对应55)。当字符参与算术运算时,会自动转换成对应的整数编码值来计算。 - C标准的强制规定:C语言标准明确要求,数字字符
'0'到'9'的编码值必须是连续递增的——'1'比'0'大1,'2'比'0'大2……直到'9'比'0'大9。
所以用任意一个数字字符减去'0',得到的结果就是该字符对应的整数。比如'7' - '0',就是55 - 48 = 7,正好得到数字7的整数形式。
而且这个写法是可移植的,不管编译器用哪种字符编码(不一定是ASCII),只要符合C标准,这个转换逻辑都能正常工作。
内容的提问来源于stack exchange,提问作者user13450139
相关产品推荐
相关产品推荐

