volatile
所有定义的变量都是在内存上面的, 
例如:
int i = 10;
int j = i;
int k = i;
 
i = 10; 是初始化的变量,存放在数据段,未初始化的变量存放在bss段
也就是i为左值时存放在内存上
j = i 此时 i 为右值,那么i的值在寄存器上,j就从寄存器上面取值
由于编译器的原因可能导致编译过程中寄存器上的值会改变
,那么 k 取到的值就不是我们想要的了
如果加了volatile int k = i ;
那么k每次就从内存上取值,保证了取值的正确性

新浪博客:http://blog.sina.com.cn/u/2049150530
csdn博客:http://blog.csdn.net/u011749143
博客园:http://www.cnblogs.com/sky-heaven/
新浪微博:张昺华--sky
知乎:http://www.zhihu.com/people/zhang-bing-hua

转载于:https://www.cnblogs.com/sky-heaven/p/4140490.html

volatile的深入理解--【sky原创】相关推荐

  1. Linux 输入子系统原理理解(原创)

    linux    输入子系统原理理解(原创) 以前学了单独的按键设备驱动以及鼠标驱动,实际上,在linux中实现这些设备驱动,有一种更为推荐的方法,就是input输入子系统.平常我们的按键,触摸屏,鼠 ...

  2. 【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】

      第一题 #include<stdio.h>  int main()  {  unsigned int a=6;  int b=-20;  printf("%d\n" ...

  3. c语言中 加法符号如何定义,【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】...

    第一题 #include int main() { unsigned int a=6; int b=-20; printf("%d\n",a+b); (a+b)>6? put ...

  4. C语言 const、volatile、const volatile限定符理解

      在C语言经常会用到变量类型限定符const和volatile,但是const和 volatile也可以一起使用.下面就一次分析一下这三种情况的使用方法. 1.const   从字面意思理解,意思就 ...

  5. 在keil 4中添加stc系列芯片的方法--【sky原创】

    在keil 4中添加stc系列芯片的方法:  1.从官网下载uv3.cdb的文件 网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb: 3. 然后 ...

  6. volatile(粗浅理解)

    (一)阅读指导    1.本文站在设计者角色进行思考.    2.知其然,知其所以然.    3.没有完美东西,请遵循应用场景.    请原谅我用大量篇幅来娓娓道来,只为了以上三点!    推荐缓存文 ...

  7. 实现开发板与ubuntu的共享--根文件系统NFS--Samba共享【sky原创】

    虚拟机要选择桥接,并且禁用有线和无线网卡,开启本地连接,本地连接属性要写如下:   ip地址是在连上板子后,windows   cmd  下  ipconfig得出的 板子的网线最好连接交换机或者路由 ...

  8. volatile关键字简单理解

    volatile 通常被比喻成"轻量级的 synchronized ",也是Java并发编程中比较重要的一个关键字. 和 synchronized 不同, volatile 是一个 ...

  9. deadbeef_于关u-boot中的.balignl 16,0xdeadbeef的理解(原创,请勿转载)

    最近在分析u-boot的源代码,看到这一行: .balignl 16,0xdeadbeef 不理解了,不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?然后在查阅了众多资 ...

最新文章

  1. 【转】Android Activity原理以及其子类描述,androidactivity
  2. 汇总|实时性语义分割算法
  3. java - 判断 字符串是否为空
  4. .classpath文件有什么用_干货分享:Windows目录结构剖析,C盘目录常见文件夹都有什么用?...
  5. 属性类:Properties
  6. 有效数据外含有额外数据_Excel|应用数据有效性规范数据录入
  7. Java集合框架之Collection实例解析
  8. 华为数据之道_DT|华为数据之道,怕你学不会,这次干脆出了本书
  9. 供应链金融与区块链的关系
  10. 【RocketMQ】发送事务消息
  11. 《OKR源于英特尔和谷歌的管理利器》阅读总结
  12. winpe装双系统linux_LINUX下安装WINDOWS双系统
  13. Linux目录文件操作命令篇--(工作常用命令的深度使用,小白必收藏)
  14. mysql动态ip域名连接_用本地动态IP连接本地mysql
  15. document.referrer之隐藏来源
  16. 无法启动此程序,因为计算机中丢失MSVCRTD.dll(MFC42D.dll, MFCO42D.dll)
  17. 【c/c++编程】查找类问题
  18. 宝塔linux面板时区不正确怎么修改
  19. 4.3 文本数据分析
  20. SpringMVC 2.HelloWorld

热门文章

  1. 【Java】面向对象是什么
  2. 【Linux】Linux软件安装和定时任务
  3. linux脚本 校准时区,shell脚本校准系统和bios时间
  4. 01-05 Linux常用命令-性能统计
  5. csv phoenix 导入_phoenix学习
  6. 零基础学UI设计,正确的学习方法讲解!
  7. 没有基础怎么学Web前端?相关学习路线是什么?
  8. 前端开发,必知ES5、ES6的7种继承
  9. linux统计某个字符个数,Linux统计一个文件中特定字符个数的方法
  10. 西数硬盘固件刷新工具_一个1TB移动硬盘的数据恢复过程,含分析问题与解决方式...