最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 volatile與const同時使用應注意的問題

 更新時間:2013年09月17日 08:45:28   作者:  
“volatile”的含義是“請不要做沒譜的優(yōu)化,這個值可能變掉的”,而并非“你可以修改這個值”。因此,它們本來就不是矛盾的

const和volatile放在一起的意義在于:

(1)本程序段中不能對a作修改,任何修改都是非法的,或者至少是粗心,編譯器應該報錯,防止這種粗心;

(2)另一個程序段則完全有可能修改,因此編譯器最好不要做太激進的優(yōu)化。

“const”含義是“請做為常量使用”,而并非“放心吧,那肯定是個常量”。
“volatile”的含義是“請不要做沒譜的優(yōu)化,這個值可能變掉的”,而并非“你可以修改這個值”。
因此,它們本來就不是矛盾的。

const修飾的變量不允許這里修改不代表不允許別處修改,比如:

復制代碼 代碼如下:

int i = 5;
const int* p = &i;
*p = 6; // 不可以;
i = 7; // 完全可以,而且那個“const”的“*p”也跟著變成了7。

對于非指針非引用的變量,const volatile同時修飾的意義確實不大。個人覺得。

需要明白“volatile”的含義并非是“non-const”。所以他們才可以放在一起。
在C++語言中,const沒有反義詞,如果一個變量沒有const修飾,那它本身就是const的反義詞,而并非加上volatile才是const的反義詞。

兩者同時修飾一個對象的典型情況,是用于驅動中訪問外部設備的只讀寄存器。

留一個問題:const volatile int i=10;這行代碼有沒有問題?如果沒有,那 i 到底是什么 屬性?

回答一:沒有問題,例如只讀的狀態(tài)寄存器。它是volatile,因為它可能被意想不到地改變;它是const,因為程序不應該試圖去修改它。volatile和const并不矛盾,只是控制的范圍不一樣,一個在程序本身之外,另一個是程序本身。

回答二:沒問題,const和volatile這兩個類型限定符不矛盾。const表示(運行時)常量語義:被const修飾的對象在所在的作用域無法進行修改操作,編譯器對于試圖直接修改const對象的表達式會產生編譯錯誤。volatile表示“易變的”,即在運行期對象可能在當前程序上下文的控制流以外被修改(例如多線程中被其它線程修改;對象所在的存儲器可能被多個硬件設備隨機修改等情況):被volatile修飾的對象,編譯器不會對這個對象的操作進行優(yōu)化。一個對象可以同時被const和volatile修飾,表明這個對象體現常量語義,但同時可能被當前對象所在程序上下文意外的情況修改。另外,LS錯誤,const可以修飾左值,修飾的對象本身也可以作為左值(例如數組)。

相關文章

  • C++中std::tuple和std::pair的實現

    C++中std::tuple和std::pair的實現

    std::tuple和std::pair是兩種極具實用性的數據結構,本文主要介紹了C++中std::tuple和std::pair的實現,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決

    C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決

    這篇文章主要介紹了C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 針對Ruby的Selenium WebDriver安裝指南

    針對Ruby的Selenium WebDriver安裝指南

    這篇文章主要介紹了針對Ruby的Selenium WebDriver安裝指南,Selenium直接運行于瀏覽器之中,是進行各種調試的一大神器,需要的朋友可以參考下
    2015-07-07
  • C語言的三種條件判斷語句你都了解嗎

    C語言的三種條件判斷語句你都了解嗎

    這篇文章主要為大家詳細介紹了C語言的三種條件判斷語句,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 如何在C語言的宏中使用類型關鍵字

    如何在C語言的宏中使用類型關鍵字

    如何在C語言的宏中使用類型關鍵字呢?以下是實現方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • C++之實現快速清空vector以及釋放vector內存

    C++之實現快速清空vector以及釋放vector內存

    這篇文章主要介紹了C++之實現快速清空vector以及釋放vector內存方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 利用C++如何實現一個阻塞隊列詳解

    利用C++如何實現一個阻塞隊列詳解

    這篇文章主要給大家介紹了關于利用C++如何實現一個阻塞隊列的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • C++線程池的簡單實現方法

    C++線程池的簡單實現方法

    這篇文章主要介紹了C++線程池的簡單實現方法,包括了線程操作函數及相關屬性的用法,需要的朋友可以參考下
    2014-09-09
  • map插入自定義對象總結

    map插入自定義對象總結

    黑樹在插入節(jié)點時,必須依照大小比對之后在一個合適的位置上執(zhí)行插入動作。所以作為關鍵字,起碼必須有“<”這個比較操作符
    2013-09-09
  • C++中的位運算和位圖bitmap解析

    C++中的位運算和位圖bitmap解析

    這篇文章主要介紹了C++中的位運算和位圖bitmap,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

德江县| 古丈县| 临安市| 茂名市| 丰顺县| 樟树市| 康马县| 柳林县| 南宁市| 海安县| 禹城市| 曲周县| 怀仁县| 额尔古纳市| 衡南县| 阿拉善右旗| 陵水| 广饶县| 贞丰县| 阆中市| 凤冈县| 四会市| 穆棱市| 汉沽区| 永善县| 文登市| 汕头市| 呼和浩特市| 林口县| 大荔县| 蒙城县| 鄂伦春自治旗| 曲沃县| 平果县| 孟村| 乐山市| 嘉荫县| 明溪县| 伊通| 辽宁省| 荔浦县|