>407
1.構造体のメンバが宣言順にアドレス増加方向で並ぶのは保証されている
2.配列内の要素はアドレス増加方向で並ぶことが保証されている
3.アドレス演算は+で増加方向、-で減少方向が保証されている
だが、
4.構造体の中身が隙間無く並ぶことは保証されていない
に引っかかって誤動作することがあると思われ。

sizeof(int)=4,sizeof(short)=2として、
struct mix{
 short a[1];
 int b[1];
 short c[1];
};
だと、恐らくmix.c[-3] != mix.a[0]になると思う。
ただそれよりも何よりも、そんな危険な匂いのするコード個人的に嫌だw