You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教代码中S[i]-'0'的作用及字符是否自动转换为整数

代码中-'0'的作用与字符转整数的说明

1. -'0'的核心作用

在C/C++这类语言里,字符是基于ASCII编码存储的。举个实际的例子:字符'0'的ASCII值是48,'1'是49,'2'是50……以此类推,每个数字字符的ASCII值刚好比它对应的整数值大48。

所以S[i] - '0'这个操作,本质就是把字符形式的数字转换成对应的整数数字。比如当S[i]是'5'时,'5' - '0'就等于53 - 48 = 5,这样就能把字符'5'转成整数5,才能正常参与后续的数值计算(比如sum *10 + 5)。如果没有这一步,直接用S[i]的ASCII值参与计算,结果就完全偏离预期——比如用'5'的ASCII值53的话,sum*10 +53会得到和原数字字符串完全无关的数值。

2. 字符S[i]会自动转换为整数吗?

是的!在C/C++的算术运算中,char类型的变量会自动被提升为int类型,也就是它对应的ASCII码值。比如说S[i]是字符'3',在参与sum *10 + S[i]这个运算时,它会先被转换成ASCII值51,然后再和其他整数计算。

不过要注意:单纯的自动转换得到的是ASCII值,不是我们需要的数字本身,所以必须减去'0'的ASCII值(48),才能得到对应的整数数字。


内容的提问来源于stack exchange,提问作者return0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:14:21