10

4バイトの符号なし整数の最大値を出力したい。

#include "stdafx.h"
#include "conio.h"

int _tmain(int argc, _TCHAR* argv[])
{
    unsigned int x = 0xffffffff;
    printf("%d\n",x);
    x=~x;
    printf("%d",x);
    getch();
    return 0;
}

しかし、出力は -1 と 0 になります。x = 4294967295 を出力するにはどうすればよいですか?

4

8 に答える 8

16

この%d形式は、その引数をsigned intとして扱います。%u代わりに使用してください。

しかし、type の最大値を取得するより良い方法は、マクロunsigned intを使用することです。UINT_MAXあなたは必要になるでしょう

#include <limits.h>

見えるようにします。

値 -1 を型に変換することによって、符号なし型の最大値を計算することもできます。

#include <limits.h>
#include <stdio.h>
int main(void) {
    unsigned int max = -1;
    printf("UINT_MAX = %u = 0x%x\n", UINT_MAX, UINT_MAX);
    printf("max      = %u = 0x%x\n", max, max);
    return 0;
}

必ずしもUINT_MAXではないことに注意してください。たまたま 32 ビットの場合ですが、16 ビットほど小さい場合もあります。いくつかのシステムでは 64 ビットです。 0xffffffffunsigned int

于 2012-10-10T05:58:33.130 に答える
15

%uprintf フォーマット文字列として使用します。

于 2012-10-10T05:56:57.140 に答える
6

<limits.h>:で定義されたマクロがありますUINT_MAX

于 2012-10-10T05:58:48.490 に答える
4

%uprint unsigned int%lufor unsigned long、および%huforのフォーマット文字列として使用しますunsigned short

于 2012-10-10T05:58:05.697 に答える
3

<stdint.h>and <limits.h>thenINT_MAXまたはタイプに適した制限を使用する必要があります。

于 2012-10-10T05:57:13.410 に答える
1

printf("%u", ~0); // unsigned int のすべてのビットを 1 で埋めて、値を出力します。

于 2013-11-15T00:28:37.983 に答える