質問編集履歴
1
int == 4バイト、short == 2バイト、char == 1バイトです
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,16 +21,16 @@
|
|
21
21
|
}
|
22
22
|
|
23
23
|
### 出力結果
|
24
|
-
0,
|
24
|
+
0, 20
|
25
25
|
1, (c)
|
26
26
|
2, (d)
|
27
|
-
3, ‐
|
27
|
+
3, ‐20
|
28
28
|
0, ‐1
|
29
29
|
1, 255
|
30
30
|
2, 0
|
31
31
|
|
32
32
|
### 試したこと
|
33
|
-
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)には
|
33
|
+
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を入れる?
|
34
34
|
|
35
35
|
とここまで考えたら行き詰ってしまいました、、、
|
36
36
|
どなたか詳しい方、ご教示いただけると大変助かります。
|