猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
为什么挥发性存在?
什么是
volatile
关键词呢?在C ++中,它可以解决什么问题?
就我而言,我从来没有故意需要它。
凤凰求蛊
浏览 406
回答 3
3回答
30秒到达战场
volatile在开发嵌入式系统或设备驱动程序(需要读取或写入内存映射的硬件设备)时需要。特定设备寄存器的内容可以随时更改,因此您需要使用volatile关键字来确保编译器不会对此类访问进行优化。
0
0
0
芜湖不芜
某些处理器的浮点寄存器的精度超过64位(例如,不带SSE的32位x86,请参见Peter的评论)。这样,如果您对双精度数字运行多个运算,则实际上得到的精度要比将每个中间结果截断为64位的精度更高。通常这很好,但这意味着根据编译器如何分配寄存器和进行优化,对于完全相同的输入,完全相同的操作将产生不同的结果。如果需要一致性,则可以使用volatile关键字强制每个操作返回到内存。对于某些没有代数意义但减少浮点误差的算法(例如Kahan求和),它也很有用。从代数角度讲,这是一个小问题,因此除非某些中间变量不稳定,否则它经常会被错误地优化。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续