如何反转无符号长整数中的数字?

moh*_*mad 2 c unsigned long-integer

我想反转一个数字,但它是一个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;
}
Run Code Online (Sandbox Code Playgroud)

例如,如果输入是888888888889,则输出是不同的。

我认为这是因为它确实接近,如果这是正确的词的话。

我也不确定%lu

我怎样才能反转 a 的数字unsigned long

G. *_*pen 7

Anunsigned long可能不足以容纳数字888888888889。检查LONG_MAXfrom的值<limits.h>。为确保您可以保存该数字,您需要确保使用 64 位整数。long long被定义为至少 64 位大。然后,您还应该在对和的调用中使用%llu代替。请参阅此C 数据类型列表%luscanf()printf()