Мне было поручено реализовать itoa
, мой код не работает с -2147483648
. Как я могу заставить это работать?my itoa не работает с большими номерами
char *itoa(int nbr)
{
static char rep[] = "";
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);
}
узнать о пределах ...... –
'длинного типа long' – infixed
я не могу использовать' long' моего прототип функции требует 'nbr' быть' int'. –