volatile
来源:互联网 发布:nginx安装指定配置目录 编辑:程序博客网 时间:2024/06/04 19:56
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象
下面的函数有什么错误:
- int square(volatile int *ptr)
- {
- return *ptr * *ptr;
- }
- int square(volatile int *ptr)
- {
- int a,b;
- a = *ptr;
- b = *ptr;
- return a * b;
- }
volatile是易变的,防止编译器优化,将直接从内存中取数字。所以
由于*ptr的值可能被意想不到的改变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:
- long square(volatile int *ptr)
- {
- int a;
- a =*ptr;
- return a * a;
- }
0 0
- volatile
- volatile
- Volatile
- volatile
- volatile
- volatile
- volatile
- volatile
- volatile
- Volatile
- volatile
- volatile
- volatile
- volatile
- volatile
- volatile
- volatile
- volatile
- Linux网络流量实时监控ifstat iftop命令详解
- AXURE在原型设计中的应用
- solr安装部署、solr测试创建core、用solrj 访问solr(索引和搜索)
- linux 文件批量重命名
- Eclipse - 循环cin的输出如何终止
- volatile
- Android优化UI规则
- UVA-10025-The ? 1 ? 2 ? ... ? n = k problem
- Swap Nodes in Pairs
- C++设计模式学习笔记一:简单工厂模式
- Hadoop在CentOS下挂载多块数据硬盘
- mysql JDBC URL参数解析
- 创建PowerShell脚本数字签名认证
- 设计模式之中介者模式