質問編集履歴
1
int == 4バイト、short == 2バイト、char == 1バイトです
test
CHANGED
File without changes
|
test
CHANGED
@@ -44,13 +44,13 @@
|
|
44
44
|
|
45
45
|
### 出力結果
|
46
46
|
|
47
|
-
0,
|
47
|
+
0, 20
|
48
48
|
|
49
49
|
1, (c)
|
50
50
|
|
51
51
|
2, (d)
|
52
52
|
|
53
|
-
3, ‐
|
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)には
|
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
|
|