你明天 有一个朋友要过生日,今天把要送的礼物打包好了,一般情况下,我们明天起来不需要再次打开验证一下里面的礼物是否存在,因为我们知道,只要礼物的外包装没有动过,里面的东西应该也没有动过。其实编译器和人一样聪明,为了提高效率也会玩省事,做优化。

如下面的例子:

编译器扫描了代码发现上面,第一行代码将10赋给了整型变量a,之后a变量的值没有再发生变化,在后面的第二行中,将a变量的值取出来赋给b,在第三行代码里面将a变量的值赋给了c的时候,因为CPU访问内存速度慢,编译器为了提高效率,玩“省事”,直接将10赋给了c。

单从上面的代码我们来看是没有问题的,就如同从外包装看生日礼物完好一样。但是,如果上述代码运行在多线程中,在一个线程上下文中没有改变它的值,但是我们却不能保证变量的值没有被其他线程所改变,就好比是,生日礼物放在其他人那里保管,我们不敢100%的确定它里面的东西完好。当然这种数据不一致的机制不仅仅出现在多线程中,同样在设备的状态寄存器里也会存在。例如,网卡里的某状态寄存器里的值是否为1表示是否有网络数据到达,在当前时刻其值为1,不能代表下一时刻它的值还是1,它的值有外界决定,编译器肯定不能在这种情况下玩“省事”,为了防止在类似的情况下编译器玩省事,可以将这些变量声明为volatile,这样不管它的值有没有变化,每次对其值进行访问的时候,都会从内存里,寄存器了读取,保证数据的一致、做到表里如一。

c语言输出王字图形,专一的王子,C语言volatile关键字解析相关推荐

  1. c语言输出王字图形,C语言编程宝典(王大刚) 3 关键字和标识符

    3.1  关键字 所谓关键字就是已被Turbo C2.0本身使用, 不能作其它用途使用的字.例如关 键字不能用作变量名.函数名等. Turbo C2.0有以下关键字: Turbo C2.0扩展的共11 ...

  2. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  3. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?错!大错特错!!!...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  4. c语言输出字母随机数,你好,怎样用c语言输出一个1到100的随机数

    你好,怎样用c语言输出一个1到100的随机数以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你好,怎样用c语言输出一个1 ...

  5. c语言打出的王字图形图形,C语言编程宝典(王大刚) 3 关键字和标识符

    3.1  关键字 所谓关键字就是已被Turbo C2.0本身使用, 不能作其它用途使用的字.例如关 键字不能用作变量名.函数名等. Turbo C2.0有以下关键字: Turbo C2.0扩展的共11 ...

  6. c语言打出的王字图形图形,c语言编程 打印图形,菜单包括:矩形,平行四边形,输入图形的行数、列数并输入打印的字符,打印出图形...

    满意答案 su1254891 2014.01.12 采纳率:55%    等级:13 已帮助:9689人 #include #define true 1 void print(char cType, ...

  7. c语言输出数字漏斗图形_入门c语言必刷的五道题

    学编程最重要的就是刷题,只有刷到一定的量,才会有质的变化. 如果是刚入门的c语言,那么一定要从这些题入门 1.问题 1001: [编程入门]第一个HelloWorld程序! 即使一个简单的程序,里面也 ...

  8. c语言输出内凹图形程序,C程序格式串缺陷检测技术

    摘要: C语言是功能最强大.使用范围最广的高级程序语言之一.但是,C语言存在着很多安全性方面的问题,格式串缺陷就是一种典型的C程序缺陷.虽然出现较晚,但它的危害性却一点也不亚于诸如缓冲区溢出等广为人知 ...

  9. c语言输出数字漏斗图形_2019级C语言大作业 - 十步万度

    分享19级同学大一上学期用C语言实现的十步万度,可从码云下载: 期末作业/十步万度​gitee.com C语言大作业 - 十步万度https://www.zhihu.com/video/1215683 ...

最新文章

  1. 困扰数学家25年的“切苹果”难题,被一位华人统计学博士解决了
  2. 如何判断是否丢掉用户请求
  3. 会计期间变式OB52
  4. pytorch安装换源ubuntu_ubuntu 安装pytorch问题
  5. 谓词NSPredicate的使用
  6. java垃圾回收到老年代次数,Java垃圾回收之回收算法
  7. 怎么把c语言改成汇编语言,如何把汇编语言转换成C语言
  8. 95-36-210-ChannelHandler-系统Channel-TimeoutHandler1
  9. CSRF 攻击的应对之道
  10. 微信小程序页面 scroll-view滚动条隐藏
  11. WordPress 下载量最高的十个插件
  12. iptv组播和单播的区别
  13. python列表报错TypeError: list indices must be integers or slices, not str
  14. IT项目经理的个人知识管理(转)
  15. XE中FMX操作ListBox,添加上千条记录(含图片)
  16. Shodan完全手册部分翻译(1)
  17. 微信公众号 修改 应用签名 不生效
  18. 深度技术GHOSTXP八分钟快速装机版 V3.5 (FAT32/NTFS两个版本HTTP BT 发布啦)
  19. quartz-深度解析
  20. SQL获取当前年第一天日期 MYSQL获取当前年第一天

热门文章

  1. m3u8转mp4,不用格式软件
  2. 非视距微波传输抗干扰特性
  3. 【办公软件有哪些】万彩办公大师教程丨PDF页面编辑
  4. 设计模式-创建者模式篇
  5. input的button类型,点击页面跳转
  6. 基于STM32F4的CANOpen移植教程(超级详细)
  7. 中国数码纺织印花染料行业运行态势与投资前景预测报告2022-2027
  8. 计算机视觉在农业领域中的应用
  9. 3月4日 与柳传志面对面(谁是这个时代的思想家)
  10. mysql 1045 远程_启用远程mysql连接:错误1045(28000):拒绝用户访问