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が可能な限り最大の 10 進数値表現を取得するのに問題があります。なぜこれが起こるのか、私はそれx = ULONG_MAXがうまくいくと確信していますが、それはまた-1、今では確かに正しくありません! Code-Blocks の外でもコンパイルしてみました。

ここで何が欠けていますか?

4

1 に答える 1

9

で符号なし変数を出力する必要がありますu。long には接頭辞が付いているlため、この場合は必要ですlu

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