【原创】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)

相关推荐

  • 如何使用Spring Session 与 Spring security 完成网站登录改造

    技术如何使用Spring Session 与 Spring security 完成网站登录改造如何使用Spring Session 与 Spring security 完成网站登录改造,相信很多没有经验的人对此束手无策,

    攻略 2021年11月9日
  • go语言之Redis数据库

    技术go语言之Redis数据库 go语言之Redis数据库一、Redis五大数据类型
    Redis 的五大数据类型是: String(字符串) 、Hash (哈希)、List(列表)、Set(集合) 和

    礼包 2021年11月10日
  • 如何理解MySQL索引cardinalit

    技术如何理解MySQL索引cardinalit本篇内容主要讲解“如何理解MySQL索引cardinalit”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解MySQL索引

    攻略 2021年10月29日
  • 使用云视频服务器中需要注意的功能云服务器香港

    技术使用云视频服务器中需要注意的功能云服务器香港在为视频网站选择最佳云服务器时,从来没有一刀切。就视频业务而言,每个流媒体业务都有一组独特的要求。那么,企业流媒体视频业务的最高要求是什么?好吧,这里有一些可以派上用场的功

    礼包 2021年12月21日
  • PostgreSQL中pgmetrics有什么作用

    技术PostgreSQL中pgmetrics有什么作用本篇内容主要讲解“PostgreSQL中pgmetrics有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pos

    攻略 2021年11月10日
  • 第一条铁路,中国第一条铁路建设几年

    技术第一条铁路,中国第一条铁路建设几年中国第一条小铁路——1865年,英国商人杜兰德在北京宣武门外沿着护城河修建了一条一里长“展览铁路”德小铁路,这是中国出现最早的一条铁路第一条铁路。不久,清统治者以:“观者骇怪”为由,

    生活 2021年10月19日