例子:
int i =10;
int j = i; //1
int k = i; //2
1、2两句中,i 没有被用作左值,这时编译器认为i 的值没有发生变化, i赋值给j后没有被释放掉,继续直接赋值给k。
例子:
volatile int i = 10 ;
int j = i;
int k = i;
volatile关键字告诉编译器,i是随时可能发生变化的,每次使用它的时候必须从内存中取出i的值,因而编译器生成的汇编代码会重新从i的地址处读取数据放在k中。
const volatile int i = 10 ;
原文:http://www.cnblogs.com/yangjin2010/p/5793476.html