查了一下volatile是类似const的类型限定符 申明为volatile的对象表明它具有与优化相关的特殊属性
抄一段k&R里面的话
英文版P210
volatile用于强制某个实现屏蔽可能的优化。例如,对于具有内存映像读入输出的机器,指向设备寄存器的指针可以声明为指向volatile的指针,目的是防止编译器通过指针删除明显多余的引用。
Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.