【原创】C语言类型限定符-关键字

技术【原创】C语言类型限定符-关键字 【原创】C语言类型限定符-关键字volatile 限定符告诉计算机,代理(而不是变量所在的程序)可以改变该变量的值。通常,它被用于硬件地址以及在其他程序或同时运行的

c语言类型限定符-关键字。

volatile限定符告诉计算机,可以更改变量值的是代理,而不是变量所在的程序。通常,它用于硬件地址,并在同时运行的其他程序或线程中共享数据。地址用于接受来自另一台计算机的输入信息。

Volatile涉及编译器优化。

编译器注意到代码使用了x两次,但是没有改变它的值。因此,编译器将x的值临时存储在寄存器中,然后在使用时从寄存器中读取x的值。这个过程叫做缓存。没有volatile关键字,编译器不知道这是否会发生。因此,编译器不会缓存。如果代码中没有声明volatile关键字,编译器会假设变量的值在使用过程中没有变化,然后尝试优化代码。

以上是C入门Plus的讲解。

volatile关键字和const一样,是一个类型修饰符,它所修改的变量可以被编译器未知的一些因素改变,比如操作系统、硬件或其他线程。当遇到此关键字声明的变量时,编译器将不再优化访问该变量的代码,从而提供对特殊地址的稳定访问。

先看下面的例子:

int i=10

int j=I;//(1)语句。

int k=I;//(2)语句。

此时,编译器优化了代码,因为我没有在语句(1)和(2)中用作左值。此时编译器认为I的值没有改变,所以在语句(1)中从内存中取出I的值并赋值给J后,这个值并没有被扔掉,而是继续用于在语句(2)中赋值给K。编译器不会生成汇编代码,也不会再次从内存中检索I的值,提高了效率。但注意:(1)、(2)语句之间的I不作为左值。

再看一个例子:

volatile int i=10

int j=I;//(3)语句。

int k=I;//(4)语句。

volatile关键字告诉编译器我随时都可能改变,每次使用I的值都必须从内存中取出,所以编译器生成的汇编代码会从I的地址中重新读取数据,放入k中。

volatile关键字告诉编译器我随时都可能改变,每次使用I的值都必须从内存中取出,所以编译器生成的汇编代码会从I的地址中重新读取数据,放入k中。

这样,如果I是一个寄存器变量或者代表一个端口的数据或者多线程的共享数据,就很容易出错,所以volatile可以保证对特殊地址的稳定访问。

至于为什么容易出错,先记住怎么用,然后填坑。

作者:四月黄妙芝。

来源:https://www.cnblogs.com/hanoch-HMZ/p/15493017.html

本文版权归作者和博主园区所有,仅供学习使用。欢迎转载讨论。但是,未经作者同意,您必须保留此声明,并在文章页面的明显位置给出原文的链接。否则,您保留追究法律责任的权利。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/62061.html

(0)

相关推荐

  • 晚安和安哪个更亲密,晚安和安有什么大的区别吗

    技术晚安和安哪个更亲密,晚安和安有什么大的区别吗晚安和安晚安和安哪个更亲密,从字面上理解都是一样的意思。 晚安:晚上向人问候礼貌用语或者晚上睡觉之前的温馨用语。 安:现代年轻人常用语,是晚安的省略版。 有更亲昵的成份。多

    生活 2021年10月23日
  • 三相功率的计算公式,三相电动机功率计算方法

    技术三相功率的计算公式,三相电动机功率计算方法三相电动机功率三相功率的计算公式: P3=3P相=3*U相*I相*COSφ*效率=√3*U 线 *I线*COSφ*η 效率
    =1.732U线*I线*COSφ*效率
    1.三相

    2021年10月25日
  • 端午节的简介50字,端午节的来历30字左右

    技术端午节的简介50字,端午节的来历30字左右战国时期的楚国(今湖北)诗人屈原在该日抱石跳汨罗江自尽端午节的简介50字,统治者为树立忠君爱国标签将端午作为纪念屈原的节日;部分地区也有纪念伍子胥、曹娥等说法。
    端午节与春节

    生活 2021年10月22日
  • Python操作Word文档docx的常用方法有哪些

    技术Python操作Word文档docx的常用方法有哪些这篇文章主要介绍Python操作Word文档docx的常用方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!安装docx是一个非标准库

    攻略 2021年10月30日
  • HBase1.x中Region的拆分是怎样的

    技术HBase1.x中Region的拆分是怎样的这篇文章给大家介绍HBase1.x中Region的拆分是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一部门:Region拆分的实现 c

    攻略 2021年11月15日
  • 碳还原氧化铁的化学方程式,碳还原氧化铁的化学方程式

    技术碳还原氧化铁的化学方程式,碳还原氧化铁的化学方程式氧化铁与碳发生反应的化学方程式碳还原氧化铁的化学方程式:2Fe2O3+3C=高温=4Fe+3CO2(气体)氧化铁,别名三氧化二铁、烧褐铁矿、烧赭土、铁丹、铁红、红粉、

    生活 2021年10月25日