鱼C论坛

 找回密码
 立即注册
查看: 3256|回复: 9

[已解决]帮帮忙

[复制链接]
发表于 2023-10-26 20:04:41 | 显示全部楼层    本楼为最佳答案   
本帖最后由 柿子饼同学 于 2023-10-26 21:14 编辑
xzh莫小痕 发表于 2023-10-26 20:10
我没有搞清楚为啥要这样写那一步标红的步骤,num * 10 + (ch-0)这一步是将字符形转成整形吗,为何要这样写 ...


举个例子, 比如现在一个字符串是 "aa12345aa", 目前 num == 0
前两个肯定是跳过的 , 当遇到 ch == '1' 时, 检测到是数字字符, 执行 16 行
num 先乘 10 还是 0 , 然后加上 '1' - '0'
注意 , 如果没有 - '0' 那 ans 加的就是 ch 的 ASCII 码值 (ch 是 char 类型) , '0' 的 ASCII 码是 48, '1' 是 49 , 显然减去 '0' 就是这一位的数字了
到 ch == '2' 时 , num * 10 == 10, 这时再加 2 变成 12
以此类推 , num 的值后面依次是 123, 1234, 12345
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-27 09:48:49 | 显示全部楼层
xzh莫小痕 发表于 2023-10-27 08:30
谢谢你,不过我还想问一下123怎么输出的,当num=2,   2*10=20,   '3'-'0'= 3,那输出是23呀

碰到 1 的时候 num 是 0 , 这时 num*10 + '1' - '0' == 1
碰到 2 的时候 num 是 1 , num*10 + '2' - '0' == 12
以此类推
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 17:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表