【发布时间】:2014-04-25 07:56:27
【问题描述】:
我尝试编写一个程序来反转用户输入的数字。
用户输入范围是从0 EDITED代码。
unsigned long int reverseNumber(unsigned long int num)
{
unsigned long int rev = 0;
while (num > 0)
{
rev = rev *10 + (num%10);
num = num/10;
}
return rev;
}
问题是当我输入 4294967295 时,它会输出 1632727628。 为什么?我不知道为什么会这样。 我怎样才能扭转4294967295。
我使用 %lu 将其更改为 unsigned long int, printf,但仍然输出 1632727628。为什么?
【问题讨论】:
-
发生整数溢出
-
只需将 int 转换为 char 数组并从头到尾打印。
-
但我将其更改为 unsigned long int,它仍然输出相同的答案。为什么?
标签: c unsigned-integer