将字符串中的整数存入int类型栈时,exp[i]-'0'的作用是什么?
字符串数字转整数时
-'0'的作用解释 当你直接将字符串中的数字字符(比如'5')推入int类型栈时,栈中存储的其实是该字符对应的ASCII编码值,而非你期望的整数数值——比如字符'0'的ASCII值是48,'1'是49,直到'9'是57,直接push这些值自然会得到异常结果。
代码里的exp[i]-'0'本质是利用ASCII编码的规律做数值转换:
- 所有数字字符的ASCII值是连续递增的,
'1'-'0'=1,'2'-'0'=2,以此类推,'9'-'0'=9 - 用当前数字字符的ASCII值减去
'0'的ASCII值,就能直接得到该字符对应的整数数值,这样推入栈的就是正确的int类型数字,而非字符编码。
举个实际例子:如果exp[i]是字符'7',它的ASCII值是55,55减去'0'的48,结果是整数7,这正是你需要存入栈的正确数值。
内容的提问来源于stack exchange,提问作者NoobMaster_69
相关产品推荐
相关产品推荐

