概要 Cは超高級アセンブラ? - Qiita [キータ] yohhoyさんのコメント ここで挙げられているプログラムは、いわゆる「未定義動作」となります。 http://www.jpcert.or.jp/sc-rules/c-exp05-c.html 環境(コンパイラやOS等)によっては出力結果が20になったり18になったり、はたまた実行時クラッシュを引き起こしたりしますが、いずれもこのプログラムとしては「あり得る」実行結果です。 とあったので、逃げ道がないか探しました。 結論は、構造体の実体そのものにはconstをつけず、メンバにconstつければ逃げられるようです EXP05-C. const 修飾をキャストではずさない には、以下のように記述されています。 変数の型にたいするconst修飾をキャストしてはずさないこと。const 修飾をキャストしてはずすと、プログラムが定数値を変更で