#include<stdio.h>
int main()
{
unsigned short a=-1;
printf("%d",a);
return 0;
}
- これにより、出力 65535 が得られます。なぜですか?
- a の値を負側に増やすと、出力は (2^16-1=)65535-a になります。
unsigned short int の範囲が 0 から 65535 であることは知っていますが、なぜ 0 から 65535 の範囲で回転しているのでしょうか。
#include<stdio.h> int main() { unsigned int a=-1; printf("%d",a); return 0; }
- 出力は -1 です。
- %d は、ここでその (int) 範囲の最大値を出力する規則に従っていない理由よりも、符号付き 10 進整数に使用されます。
- この部分の出力が -1 なのはなぜですか?
%u が符号なし 10 進整数の出力に使用されることは知っています。
最初のコードではなく、2 番目のコードでビヘイビアが定義されていないのはなぜですか?
これは、gcc コンパイラでコンパイルしたものです。これは C コードです。私のマシンでは、short int のサイズは 2 バイトで、int のサイズは 4 バイトです。