次のコードを分析してください... 'int i' は unsigned として宣言されていますが、コンパイラはエラーを出さず、-121 として出力します (unsigned int の範囲は正です。) 理由を提案してください。
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
unsigned int i=-121;
printf("%d",i);
getch();
}
私の知る限り、%dは符号付き整数値に使用されます。符号なし値で使用する場合は、そのメモリ位置に格納されている符号付き整数値が表示されるため、%dを使用することはできません。%uを試してください。動作するはずです。
定義上、 anunsigned int
を負にすることはできません (つまり、「符号なし」の意味です)。に負の値を格納する場合i
、その行は次のようになります。int i=-121;
ウィキペディアを参照