gpt4 book ai didi

c - 在 C 中将字符串转换为整数时的奇怪行为

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

正在开发一个将数学表达式作为字符串然后对其进行评估的程序,并发现了一个奇怪的行为。给定

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]){

int ary[4];
char * string = "123+11";

for (int i = 0; i < 3; i++){

ary[i] = atoi(&string[i]);
printf("%d\n", ary[i]);
}

}

我得到输出:

123
23
3

虽然我可能期望得到输出:

1
2
3

这是 atoi() 函数的一部分吗?

最佳答案

这是正确的行为,因为 atoi 将指向 char 的指针作为输入并将其转换为 int 直到找到“\0”字符.

char * string = "123";

字符串中的“\0”出现在 123 之后。

对于语句:

ary[0] = atoi(&string[0]);

atoi 以 1 开头将其转换为 int 直到 123。

对于语句:

ary[1] = atoi(&string[1]);

atoi 以 2 开头将其转换为 int 直到 23。

对于语句:

 ary[2] = atoi(&string[2]);

atoi 以 3 开头将其转换为 int 直到 3.

如有不明之处请告知

关于c - 在 C 中将字符串转换为整数时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689391/

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