1
#include <stdio.h>
#include <math.h>
#include <limits.h>

int main(void)
{
    unsigned long x = 0;

    x = x ^ ~x;
    printf("%d\n", x);

    x = (unsigned long)pow(2, sizeof(x)*8);
    printf("%d\n", x);

    x = ULONG_MAX;
    printf("%d\n", x);
    return 0;
}

我在 Windows 7 上使用 CodeBlocks12.11 和 MinGW 4.7.0-1。由于某种原因,我无法让我的变量x获得最大可能的十进制值表示。为什么会发生这种情况,我相信这x = ULONG_MAX应该有效,但它也会导致-1,现在肯定是不对的!我也尝试在代码块之外编译它。

我在这里想念什么?

4

1 回答 1

9

您必须使用 打印无符号变量u。long 以 为前缀l,因此lu在这种情况下您需要。

printf("%lu\n", x);
于 2013-03-30T00:40:14.360 回答