gpt4 book ai didi

c - C语言K&R中的atoi函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:28 27 4
gpt4 key购买 nike

我完全不知道这个循环是做什么的。

int atoi(char s[])
{
int i, n;


n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');
return n;
}

这部分我没听懂:

for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + (s[i] - '0');

我得到了括号内的整个 for 循环,以及 s[i] - '0' 的作用。但我不知道这里进行的是哪种操作 --> n = 10 * n

我不知道 n 代表什么,为什么乘以 10。我知道它将数字字符串转换为等效的数字,但我只是不明白那里的整个操作。

最佳答案

But I don't get what kind of operation is going on here --> n = 10 * n

这就是您逐位构建数字的方式。如果您正在编写计算器,它基本上与它的工作方式相同。如果我写了一个简单的计算器,下面是它处理输入 547 的方式:

  1. 从0开始
  2. 5 ==> 0*10 + 5 = 5
  3. 4 ==> 5*10 + 4 = 54
  4. 7 ==> 54*10 + 7 = 547

基本上,atoi 做的是完全相同的事情,但它不是从按钮按下中读取每个数字,而是从字符串中读取它们。每次读取一个新数字时,您都会执行 n *= 10 为下一个数字腾出空间,该数字直接添加到末尾。

关于c - C语言K&R中的atoi函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209062/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com