1

次のコードを分析してください... 'int i' は unsigned として宣言されていますが、コンパイラはエラーを出さず、-121 として出力します (unsigned int の範囲は正です。) 理由を提案してください。

#include<stdio.h>
#include<conio.h>
void main()
{
    clrscr();
    unsigned int i=-121;
    printf("%d",i);
    getch();
}
4

2 に答える 2

1

私の知る限り、%dは符号付き整数値に使用されます。符号なし値で使用する場合は、そのメモリ位置に格納されている符号付き整数値が表示されるため、%dを使用することはできません。%uを試してください。動作するはずです。

于 2012-08-27T15:38:39.543 に答える
1

定義上、 anunsigned intを負にすることはできません (つまり、「符号なし」の意味です)。に負の値を格納する場合i、その行は次のようになります。int i=-121;

ウィキペディアを参照

于 2012-08-27T15:58:12.307 に答える