int main(void){
int ai[2]={ (1) , (2) };
short *ai2=(short *)(&ai[sizeof(ai)/sizeof(short)-3])-2;
short *ai3=(short *)((char *)((short *)(ai+1) -1)-1);
int n;
for(n=0;n<7;n+=2)
printf("%d,%d\n",n
,*(short *)((char *)ai2
+n
)); for(n=0;n<3;n++)
return 0;
}
上のようなプログラムを実行すると下のような出力が得られた
プログラム中の値(1),(2)及び出力値(3)(4)を10進数で解答せよ
(以下の出力結果が得られるようにint ai[2]の中身を定め、その時の(3)(4)の値を解答せよ)
/*結果
0, -50
2, (3)
4, (4)
6, 256
0, 255
1, 256
2, 50
*/
aW50IG1haW4odm9pZCl7CiAgaW50IGFpWzJdPXsgKDEpICwgKDIpIH07CiAgc2hvcnQgKmFpMj0oc2hvcnQgKikoJmFpW3NpemVvZihhaSkvc2l6ZW9mKHNob3J0KS0zXSktMjsKICBzaG9ydCAqYWkzPShzaG9ydCAqKSgoY2hhciAqKSgoc2hvcnQgKikoYWkrMSkgLTEpLTEpOwogIGludCBuOwoKICBmb3Iobj0wO248NztuKz0yKQogICAgcHJpbnRmKCIlZCwlZFxuIixuLCooc2hvcnQgKikoKGNoYXIgKilhaTIrbikpOwogIGZvcihuPTA7bjwzO24rKykKICAgIHByaW50ZigiJWQsJWRcbiIsbiwqKGFpMytuKSk7CgogIHJldHVybiAwOwp9CgrkuIrjga7jgojjgYbjgarjg5fjg63jgrDjg6njg6DjgpLlrp/ooYzjgZnjgovjgajkuIvjga7jgojjgYbjgarlh7rlipvjgYzlvpfjgonjgozjgZ8K44OX44Ot44Kw44Op44Og5Lit44Gu5YCkKDEpLCgyKeWPiuOBs+WHuuWKm+WApCgzKSg0KeOCkjEw6YCy5pWw44Gn6Kej562U44Gb44KICijku6XkuIvjga7lh7rlipvntZDmnpzjgYzlvpfjgonjgozjgovjgojjgYbjgatpbnQgYWlbMl3jga7kuK3ouqvjgpLlrprjgoHjgIHjgZ3jga7mmYLjga4oMykoNCnjga7lgKTjgpLop6PnrZTjgZvjgogpCi8q57WQ5p6cCjAsIC01MAoyLCAoMykKNCwgKDQpCjYsIDI1NgowLCAyNTUKMSwgMjU2CjIsIDUwCiovCg==