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

C語(yǔ)言 volatile與const同時(shí)使用應(yīng)注意的問題

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

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

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

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

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

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

復(fù)制代碼 代碼如下:

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

對(duì)于非指針非引用的變量,const volatile同時(shí)修飾的意義確實(shí)不大。個(gè)人覺得。

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

兩者同時(shí)修飾一個(gè)對(duì)象的典型情況,是用于驅(qū)動(dòng)中訪問外部設(shè)備的只讀寄存器。

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

回答一:沒有問題,例如只讀的狀態(tài)寄存器。它是volatile,因?yàn)樗赡鼙灰庀氩坏降馗淖儯凰莄onst,因?yàn)槌绦虿粦?yīng)該試圖去修改它。volatile和const并不矛盾,只是控制的范圍不一樣,一個(gè)在程序本身之外,另一個(gè)是程序本身。

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

相關(guān)文章

  • C++中std::tuple和std::pair的實(shí)現(xiàn)

    C++中std::tuple和std::pair的實(shí)現(xiàn)

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

    C語(yǔ)言執(zhí)行時(shí),程序控制臺(tái)輸出窗口 一閃而過(guò)問題及解決

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

    針對(duì)Ruby的Selenium WebDriver安裝指南

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

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

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

    如何在C語(yǔ)言的宏中使用類型關(guān)鍵字

    如何在C語(yǔ)言的宏中使用類型關(guān)鍵字呢?以下是實(shí)現(xiàn)方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C++之實(shí)現(xiàn)快速清空vector以及釋放vector內(nèi)存

    C++之實(shí)現(xiàn)快速清空vector以及釋放vector內(nèi)存

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

    利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列詳解

    這篇文章主要給大家介紹了關(guān)于利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C++線程池的簡(jiǎn)單實(shí)現(xiàn)方法

    C++線程池的簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了C++線程池的簡(jiǎn)單實(shí)現(xiàn)方法,包括了線程操作函數(shù)及相關(guān)屬性的用法,需要的朋友可以參考下
    2014-09-09
  • map插入自定義對(duì)象總結(jié)

    map插入自定義對(duì)象總結(jié)

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

    C++中的位運(yùn)算和位圖bitmap解析

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

最新評(píng)論

天等县| 宁海县| 兰西县| 扬州市| 仁寿县| 平定县| 惠来县| 喀喇| 永仁县| 海口市| 南汇区| 阳泉市| 昭苏县| 灵山县| 宝应县| 关岭| 双鸭山市| 阳山县| 东乡族自治县| 台湾省| 清河县| 龙井市| 延庆县| 芮城县| 左权县| 陵川县| 固始县| 金秀| 昆山市| 岑巩县| 西乌珠穆沁旗| 桓台县| 左贡县| 乌审旗| 崇义县| 成安县| 犍为县| 西贡区| 额济纳旗| 乡城县| 大新县|