什么是volatile關鍵詞呢?在C ++中,它可以解決什么問題?就我而言,我從來沒有故意需要它。
3 回答

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
volatile在開發嵌入式系統或設備驅動程序(需要讀取或寫入內存映射的硬件設備)時需要。特定設備寄存器的內容可以隨時更改,因此您需要使用volatile關鍵字來確保編譯器不會對此類訪問進行優化。

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
某些處理器的浮點寄存器的精度超過64位(例如,不帶SSE的32位x86,請參見Peter的評論)。這樣,如果您對雙精度數字運行多個運算,則實際上得到的精度要比將每個中間結果截斷為64位的精度更高。
通常這很好,但這意味著根據編譯器如何分配寄存器和進行優化,對于完全相同的輸入,完全相同的操作將產生不同的結果。如果需要一致性,則可以使用volatile關鍵字強制每個操作返回到內存。
對于某些沒有代數意義但減少浮點誤差的算法(例如Kahan求和),它也很有用。從代數角度講,這是一個小問題,因此除非某些中間變量不穩定,否則它經常會被錯誤地優化。
- 3 回答
- 0 關注
- 437 瀏覽
添加回答
舉報
0/150
提交
取消