しかし最近C言語を再び使うようになったので、まず復習としてポインタの事を勉強しなおしてました。
そこで様々なサンプルプログラムを眺めてたのですが、よくわからないプログラムがありました。
それは添付したファイルを参照してみてください。
#include<stdio.h> int main(void){ short ai[4] = {1, -128, -256 , -257}; short *ai2=(short *)((char *)((int *)ai+1)-3)+sizeof(ai)/sizeof(int)-1; int n; for (n=-1 ; n<2 ; n++) printf("%d,%d\n",n,ai2[n]); }
このプログラムを実行すると結果は
-1 , -32768
0 , 255
1 , -1
のようになります。
なんでこのような出力結果になるのかがよく理解できません。
色々調べて自分なりに考えてみたのですがよく分かりませんでした。
どういった構造でこの結果が導き出されるのか説明していただけるととても助かります。
よろしくお願いいたします。