いまどきの union
ふとイヤなコードを思いつきました
main(){ char a[4]; char b[0x3fffffff]; char c[0x3fffffff]; char d[0x3fffffff]; char e[0x3fffffff]; int f = 0; printf("%x %x %x %x\n", a[0],a[1],a[2],a[3]); f = 0x12345678; printf("%x %x %x %x\n", a[0],a[1],a[2],a[3]); return &f; }
実行結果。
i@u ~/test> ./a.out 0 0 0 0 78 56 34 12
GCC3 とか最適化ありとかだとうまくいかない…ですがどうでもいいです。