[问题] volatile 用法

楼主: caxz ( )   2016-12-23 16:24:54
今天被问到的一个问题
假设在main 中有如此宣告
main()
{
volatile int i ;
int j;
i=1;
i=2;
j=1;
j=2;
}
请问两整数变量i j 有何不同
这要如何解释呢??
感谢赐教
作者: Leadgen (新竹~)   2016-12-23 18:10:00
在硬件中,你可能需要写入i作控制。i=0;i=1;i=0;但在软件最佳化,你只作了i=0;但是你加了volatile,编译器不会对这作最佳化.
作者: james732 (好人超)   2016-12-23 20:07:00
通常这样写就会把i直接对应到某个hardware register以keil c的8051来说就会常用 _at_
作者: dijkstra (邪恶数学家)   2016-12-24 00:01:00
J=1可能会被compiler省略?
作者: saxontai (黑暗,点缀孤零零的星)   2016-12-24 02:17:00
请参考这篇文章 https://goo.gl/IjGTS
作者: OPIV (Monitor)   2016-12-25 01:28:00
volatile variables 可以想像成不会被放到暂存器

Links booklink

Contact Us: admin [ a t ] ucptt.com