質問編集履歴

1

int == 4バイト、short == 2バイト、char == 1バイトです

2020/06/07 01:48

投稿

anmitsu_c
anmitsu_c

スコア1

test CHANGED
File without changes
test CHANGED
@@ -44,13 +44,13 @@
44
44
 
45
45
  ### 出力結果
46
46
 
47
- 0, 51
47
+ 0, 20
48
48
 
49
49
  1, (c)
50
50
 
51
51
  2, (d)
52
52
 
53
- 3, ‐51
53
+ 3, ‐20
54
54
 
55
55
  0, ‐1
56
56
 
@@ -62,7 +62,7 @@
62
62
 
63
63
  ### 試したこと
64
64
 
65
- short型の*aa2は(short *)(&aa[sizeof(aa)/sizeof(short)-3])-2で定義されている、aaはint型が2つ分なので8バイト、short型が4バイトなので[]の中身はと8/2-3=1となると思います。ここでaa[1]を指しますが、さらにその後-2をします。short型なので2×2=4つ分のアドレスが引かれ結果的にaa[0]の先頭を指す。よって(a)には51を入れる?
65
+ short型の*aa2は(short *)(&aa[sizeof(aa)/sizeof(short)-3])-2で定義されている、aaはint型が2つ分なので8バイト、short型が4バイトなので[]の中身はと8/2-3=1となると思います。ここでaa[1]を指しますが、さらにその後-2をします。short型なので2×2=4つ分のアドレスが引かれ結果的にaa[0]の先頭を指す。よって(a)には20を入れる?
66
66
 
67
67
 
68
68