一:
volatile 可理解为“编译警告指示字”
volatile告诉编译器必须每次去内存中取变量值
volatile主要修饰可能被多个线程访问的变量
volatile也可以修饰可能被未知因数改变的变量
注:————————————————————————————————————————————
int obj = 10;
int a =0; 编译器在编译的时候发现obj没有被当做左值使用,
int b = 0; ----------------------> 因此,会“聪明”的直接将obj替换为10,而把a和b都
a = obj; ----------------------> 赋值为10,为此,可利用volatile进行修饰。
sleep(100);
b = obj;
——————————————————————————————————————————————
二:
const volatile int i = 0;
—— 变量 i 具有什么样的特性?
—— 编译器如何处理这个变量?
编译器每次都到内存中去取值,而不做任何的优化,i 被const修饰,因此不能出现在赋值符号的左边