const是代表一个不能改变值的常量
代表变量是一个可能被CPU指令之外的地方改变的,编译器就不会针对这个变量去优化目标代码。
变量在CPU寄存器里面,而不是在内存里面。但regist是建议型的指令,而不是命令型的指令
#include <stdio.h> int main01() { volatile int i = 100;//告诉编译器,不要自作聪明的给我针对这个变量优化代码 i = i + 5; //外部设备改了i的值, i = i + 10; i = i + 30; //i = i + 45; printf("%d\n", i); return 0; } int main() { register int i;//变量i不是在内存里面,变量i就是在CPU的寄存器里面的 i = 100; i = i + 50; i = i + 20; /* __asm { mov i, 100 mov eax, i add eax, 50 mov i, eax mov eax, i add eax, 20 mov i, eax } __asm { mov eax, 100 add eax, 50 add eax, 20 } */ printf("%d\n", i); }
资料来源:传智播客 仅供学习研究
原文:http://www.cnblogs.com/wuchuanying/p/6298387.html