C语言中的volatile关键字
i = 10
i = 10
输出的结果明显表明,release模式下,编译器对代码进行了优化,第二次没有输出正确的i值。
下面,我们把 i的声明加上volatile关键字,看看有什么变化:
#i nclude stdio.h>
void main()
{
volatile int i=10;
int a = i;
printf(i= %dn,a);
__asm {
mov dword ptr [ebp-4], 20h
}
int b = i;
printf(i= %dn,b);
}
分别在调试版本和release版本运行程序,输出都是:
i = 10
i = 32
这说明这个关键字发挥了它的作用!
评论