>>778 > "*(long long*)&f = i" は double 型のオブジェクトに long long 型の参照を通してアクセスしているので してないぞ。 それは「fのアドレスを(long long*)にキャスト(この時点でlong long*型)したアドレスに対しiを書き込め」 であって、つまり long long に long long を書いている。だからmovが出る。 逆に f = *(double*)&i; は double に double を書くから fmov が出る。 その後の最適化で変更されるのはまた別の話。