gpt4 book ai didi

c - atoi() 实际上是如何工作的

转载 作者:行者123 更新时间:2023-11-30 21:16:30 26 4
gpt4 key购买 nike

这是代码:

#include <ctype.h>

/* atoi: convert s to integer; version 2 */
int atoi(char s[])
{
int i, n, sign;

for (i = 0; isspace(s[i]); i++) /* skip white space */
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') /* skip sign */
i++;
for (n = 0; isdigit(s[i]); i++)
n = 10 * n + (s[i] - '0');
return sign * n;
}

Q1)第一行代码计算空格?这意味着它会计算空格、输入、返回等?假设我的字符串在两个空格之后开始,是吗?计算空格后,我的值增加了?

Q2)下一个符号行计算字符串是否类似于-234?或234

Q3) 下一行如果有 +- 符号,请在已按计算出的空格递增的 i 中计数它们?是吗?

Q4) 下一行计算字符串中的数字,例如234n= 10*n+ ('2'-'0') => i 得到 2 => n = 10*2 + ('3'-'0') => i 得到 23 最后得到 i 获取号码234

在最后一行将 234-1+1 相乘,无论答案是什么*

我正确理解这段代码吗?

最佳答案

A1) 不,它只计算行首的空格(标准 isspace() 实现中的空格是 ' '、'\t'、'\n'、'\v'、'\f'、 '\r';即空格、制表符、换行符、进纸符和回车符)。

A2)是的,它决定了值的符号。

A3) 如果值为“234”,则不会增加 i。但如果值为“+234”或“-234”,我们需要增加 i (以识别其后的数字)。

A4) 是的。但不是“24”(看起来像是打印错误;一定是“23”)。

关于c - atoi() 实际上是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279978/

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