gpt4 book ai didi

c - 由于某种原因 int 没有转换为 char

转载 作者:行者123 更新时间:2023-11-30 14:23:14 25 4
gpt4 key购买 nike

int myatoi(const char* string) {
int i;
i = 0;
while(*string) {
i = (i << 3) + (i<<1) + (*string -'0');
string++;
}
return i;
}

int main() {
int i = myatoi("10101");
printf("%d\n",i);
char a = (char)(((int)'0')+i);
printf("%c\n",a);


return 0;
}

我的输出结果是10101

如何解决这个问题

我应该逐个解析 int 以将其转换为 char 因为我们可以使用任何可以帮助我们转换的 C 内置函数

最佳答案

您预计会发生什么?

您的代码正确地将字符串“10101”转换为整数10101,并打印它。看起来不错。然后计算 10101+(int)'0',这可能是 10149(在 ascii 或 unicode 中,(int)'0' 是 48)。将其转换为 char 可能会得到 165(或者可能是 -91),这可能与系统上的可打印字符不对应,因此您会得到一个空白/垃圾/缺失字符。

一切都如预期。

关于c - 由于某种原因 int 没有转换为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054560/

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