看代码好像没问题啊 num += *str - ‘0’ 相当于 num = num + (*str - ‘0’) fun就相当于把字符串转成int 比如str = “1701” num 初始值为 0 while第一次进入循环 num *= 10 //num = 0 num += *str - ‘0’ // *str是‘1’,所以*str - ‘0’ = 1,num += 1,num=1,所以就相当于把str的第一个字符‘1’转成了1,其余依次类推
首先num是一个int 整型, 第五行翻译一下就是这样 num = num + 字符1 - '0' 不同类型不能相加,当然会报错
就是把字符串转换成对应的十进制数字, *str就是当前位置上的字符,在内存中存放的是字符的ASCII码,而数字的字符的ASCII码不等于数字,所以需要使用 * str 减云‘0’的ASCII码,这样就计算也对应的数字。
*str为什么是‘1’,自己找本最基础的入门书来看,然后弄清楚str++后,*str又是什么 num *= 10,相当于 num = num * 10 上面说了while第一次循环结束后,num=1,while第二次循环 *str为‘7’ num *= 10 //num = num * 10 = 1 * 10 = 10 num += *str - ‘0’ // num = num + (*str -‘0’) = 10 + (‘7’ - ‘0’) = 10 + 7 = 17 所以第二次循环结束num变为17 依次类推,最后num变为1701,所以最后输出结果就是1701 补充一点,*=,+=这样的运算符会隐式转换为=左边的类型,所以一般能转换成功就不会出错
这个应该是字符串指针的函数吧,但我看不懂这串代码,特别是第五行那里num+=…的那一行,不知道是什么意思,求大佬细细讲解一下。我用了VS2018编译了一下,但是就算是复制黏贴,编译器都说我代码有误运行不了,求大佬指点明津
65,187
社区成员
250,526
社区内容
加载中
试试用AI创作助手写篇文章吧