对于一个程序的思考1(const与 volatile)
来源:互联网 发布:mac 16进制颜色取色器 编辑:程序博客网 时间:2024/04/28 08:52
#include<stdio.h>int main(){ const int i=0; int *j=(int *)&i; *j=1; printf("%d,%d\n",i,*j); return 0;}
对于上边这个看似简单的程序却是深藏玄机
windows平台
1.在 .c 文件中输出是 1,1 ,深究原因是因为 const 在.c文件中定义的变量是只读的但是还是个变量 ,不可以显示更改如 i=1,但是可以通过地址间接进行更改
2.在 .cpp 文件中 输出是 0,1 ,深究原因是因为 const 在.cpp文件中定义的变量在预编译时就已经用 0 把 i 替换,因为编译器优化了,认为所有符号 i 都是 0,虽然在编译时为变量分配内存,但是如何间接直接改变都不会影响输出结果
LINUX 平台
与 WINDOWS平台结果一致
再看底下这个程序
#include<stdio.h>int main(){ volatile const int i=0; int *j=(int *)&i; *j=1; i=1; printf("%d,%d\n",i,*j); return 0;}
windows平台
1.在 .c 文件中输出是 1,1 volatile 在.C基本只是让编译器减少优化,这里是消除const,值是在.c 文件里体现的不明显
2.在 .cpp 文件中 输出是 1,1 volatile 在.C基本只是让编译器减少优化,这里是消除const,从而使变量 i可以被修改
LINUX 平台
与 WINDOWS平台结果一致
1 0
- 对于一个程序的思考1(const与 volatile)
- 一个码农对于‘第一性原理’的思考(一)
- 对于const常量定义在头文件的思考
- 关键字Const与Volatile的使用
- const、mustable与volatile 的使用
- 关键字Const与Volatile的使用
- .const与volatile关键字的用法
- 关键字Const与Volatile的使用
- const与volatile关键字的用法
- C/C++ 中& * const与 const * 以及volatile的使用
- const与volatile
- volatile与const
- C++ const 与 volatile
- const与volatile
- C-const与volatile
- const与volatile
- 对一个程序的思考(-1如何存储)
- 对于深度与广度的思考
- CS0234: 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)
- 页面上元素的拖拽效果html5
- hdu 3966 Aragorn's Story树剖成段更新单点查询模板
- 里面只有声明。哪可以看到其中函数的源代码呢?
- AppDelegate中几个常用的回调调用时机
- 对于一个程序的思考1(const与 volatile)
- Android Canvas 和Paint的用法
- html5中form表单
- 一GFJGKF定时间内,硬件产品的革新速度已经很快
- video-audio
- 一个控件响应多个事件问题(每次一个)
- Chapter2:开始学习C++
- Java 13
- 阿朴橡皮章教程——进阶版[套色]【转侵删】