我要逆转了号码,但它是一个unsigned long
。我不熟悉unsigned long
的质量,但是。
这是代码:
#include <stdio.h>
int main(void)
{
unsigned long num, reversed = 0;
scanf_s("%lu", &num);
while(num > 0)
{
reversed *= 10;
reversed = reversed + num % 10;
num /= 10;
}
printf("%lu", reversed);
return 0;
}
例如,如果输入是888888888889
,则输出是不同的。
而且我认为这是因为它可以接近,如果这是正确的词。
我也不知道%lu
。
我怎样才能逆转的unsigned long
的数字
unsigned long
可能不足以容纳数字888888888889
。从LONG_MAX
中检查<limits.h>
的值。为了确保你能坚持这个数字,你需要确保您使用的是64位整数。 long long
定义为至少64位大。然后,您还应该在对%llu
和%lu
的调用中使用scanf()
而不是printf()
。参见此list of C data types。
我看不到此代码有任何问题。
也许你需要打印一个换行符看到输出:
printf("%lu\n", reversed);