gpt4 book ai didi

c - 我的 itoa 不能处理大数字

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

我被分配了实现 itoa 的任务,但我的代码不适用于 -2147483648。我怎样才能让它发挥作用?

char    *itoa(int nbr)
{
static char rep[] = "0123456789";
static char buff[65];
char *ptr;
int neg;

ptr = &buff[64];
*ptr = '\0';
neg = nbr;
// fails here, turning -2147483648 to int
//2147483648 is bigger than int.
if (nbr < 0)
nbr *= -1;
if (nbr == 0)
*--ptr = rep[nbr % 10];
while (nbr != 0)
{
*--ptr = rep[nbr % 10];
nbr /= 10;
}
if (neg < 0)
*--ptr = '-';
return (ptr);
}

最佳答案

您正在尝试使用以下代码将 -2147483648 转换为 2147483648

if (nbr < 0)
nbr *= -1;

2147483648 不适合您系统上的 int。在执行此操作之前,您可能需要将 nbr 转换为可以处理更大值的类型,例如 long long

long long my_positive = nbr;
if (my_positive < 0)
my_positive*= -1;

关于c - 我的 itoa 不能处理大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37945994/

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