専門家の指導が必要な質問があります。
型を持つ値が
short
引数として関数に渡されると、printf()
自動的に型に昇格されます。int
そのため、printf()
関数は値をint
型ではなくshort
型として認識します。したがって、基本的に
short
型は 16 ビット幅であり0000000000000000
、int
型は 32 ビット幅であり、00000000000000000000000000000000
.型で変数呼び出しを宣言し、
num
-32の値で初期化するとします。つまり、型short
の最上位ビットは になります。これはです。short
1
0000000011100000
この値を に渡すと、型に
printf()
変換されるので になります。int
00000000000000000000000011100000
手順 4 で に変換する
int
と、最上位ビットは になり0
ます。%hd
指定子または指定子を使用しても%d
、正の値ではなく負の値を求めるプロンプトが表示されるのはなぜですか?