我如何反转无符号长数字?

问题描述 投票:1回答:2

我要逆转了号码,但它是一个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的数字

c long-integer unsigned
2个回答
1
投票

unsigned long可能不足以容纳数字888888888889。从LONG_MAX中检查<limits.h>的值。为了确保你能坚持这个数字,你需要确保您使用的是64位整数。 long long定义为至少64位大。然后,您还应该在对%llu%lu的调用中使用scanf()而不是printf()。参见此list of C data types


0
投票

我看不到此代码有任何问题。

也许你需要打印一个换行符看到输出:

printf("%lu\n", reversed);
© www.soinside.com 2019 - 2024. All rights reserved.