CのvolatileはメモリマップドI/Oとか割り込みで変数の値を変える場合に対応するためにあるんだよ