#include <unistd.h>
int minus(int nb)
{
if (nb < 0)
{
write(1, "-", 1);
if (nb == -2147483648)
{
write(1, "2", 1);
return (147483648);
}
return (-nb);
}
return (nb);
}
[minus function]
int 자료형의 범위는 -2,147,483,68 ~ 2,148,483,67 이기 때문에
가장 작은 음수의 값이 들어올 경우, 따로 계산을 해주어야 한다.
위 코드에서는 nb가 -2,147,483,648일 경우에 -와 2를 먼저 출력시킨 다음
nb값으로 147,483,648을 리턴시켜 ft_putnbr 함수로 보냈다.
void ft_putnbr(int nb)
{
int temp;
int num_size;
char result;
nb = minus(nb);
temp = nb;
num_size = 1;
while (temp >= 10)
{
temp /= 10;
num_size *= 10;
}
while (num_size > 0)
{
result = (char)(nb / num_size) + 48;
nb %= num_size;
num_size /= 10;
write(1, &result, 1);
}
}