我有一个名为print_number的函数。
该函数检查数字前面是否存在“ - ”,如果是,则反转该数字并取每个数字进行打印。该算法运行良好,但如果我给出-2.147.483.648(这应该是整数的下限),它会打印出-0,我不知道为什么。
#include<stdio.h>
void print_char(char character)
{
printf("%c",character);
}
void print_number(int nr)
{
int reverse=0;
if (nr < 0)
{
print_char('-');
nr *= -1;
}
while(nr > 9)
{
reverse = reverse * 10 + nr % 10;
nr = nr / 10;
}
print_char(nr + '0');
while(reverse)
{
print_char(reverse % 10 + '0');
reverse = reverse / 10;
}
}
INT_MIN
(使用nr *= -1;
),因为该值没有表示。循环while(nr > 9)
将不会迭代。 - Weather Vane