找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
發表文章前請先閱讀相關版規儲值後自動升級用戶組認識好友、聊天,分享生活趣事
無修明日花流出ntr銀魂世紀帝國中文
深情祖師ipx 557アリサグinari炒飯狙擊海賊王midv 663

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

快艇正妹豪乳吸睛

(4月新番)[繁]為美好

✡ 斗破蒼穹 年番/鬥

[簡]狼與辛香料 Merch

桃園觀音文林路 女子

[繁]迷宮飯16-
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2427|回復: 6
打印上一主題下一主題

[討論]how to explain volatile in C ?[複製鏈接]

Rank: 2Rank: 2

帖子
4343
積分
727 點
潛水值
40036 米
跳轉到指定樓層
樓主
發表於 2012-12-31 08:21 PM|只看該作者|倒序瀏覽
分享分享0收藏收藏0支持支持0
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

  尊貴會員

Melty Snow  雪靈

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
3222
積分
24364 點
潛水值
77220 米
頭香
發表於 2013-1-1 12:39 AM|只看該作者
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
I'm not sure whether the C or C++ compiler will do the same optimization.
As in C++, if you have a code such as
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.     const int i = 100;
  6.     int *p = (int*)(&i);
  7.     *p = 200;
  8.     print f("%d\n", i);   // delete the space in print f

  9.     return 0;
  10. }
複製代碼
you may get the wrong answer 100 , given by the register.
Since some compiler considered it a constant value , the value 100 was loaded
to the register , and give the value from it.
If you declare as "volatile int i" , however , will give the correct answer ,
as it tells the compiler not to do the optimization with the variable i.

(If there is any wrong in the above , please show that. Thanks.)...
瀏覽完整內容,請先 註冊登入會員
Melty Snow [雪靈]
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 2Rank: 2

帖子
872
積分
551 點
潛水值
9750 米
3
發表於 2014-1-17 12:28 PM|只看該作者
the key word 'volatile' is to change a variable
A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that aggressive optimizations must be avoided
for more information,please google
系統已重置禁訪用戶到普通用戶和密碼一次
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

if8051 該用戶已被刪除
4
發表於 2014-1-17 04:54 PM|只看該作者
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
C 語言中要使用 變數 必先宣告 變數的資料型態 datatype
如 char i;
    int j;
    float k;
如果在程式中因演算結果,會改變此資料型態!
此時就要宣告為 volatile i;
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

Rank: 1

帖子
72
積分
140 點
潛水值
25459 米
5
發表於 2014-1-17 11:37 PM|只看該作者
snowflying 發表於 2013-1-1 12:39 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

I'm not sure whether the C or C++ compiler will do the same optimization.
As in C++, if you have a c ...

我覺得有點怪但說不出哪怪!
const 在 C 跟 C++ 是不同的, 但無論如何, & 應該會造成變數被分配空間 (l-value)
...
瀏覽完整內容,請先 註冊登入會員





所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

  尊貴會員

Melty Snow  雪靈

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
3222
積分
24364 點
潛水值
77220 米
6
發表於 2014-1-18 02:42 AM|只看該作者
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
caoh 發表於 2014-1-17 11:37 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

我覺得有點怪但說不出哪怪!
const 在 C 跟 C++ 是不同的, 但無論如何, & 應該會造成變數被分配空間 (l-v ...



...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊

點評

chevylin0802 當const 在純C的編譯方式並採取嚴格檢查的方式編譯的時候, 是會產生warning的, 因為const這個字代表的是不可改變的常數  發表於 2014-1-18 09:23 PM
chevylin0802 使用C++的語法與副檔名時, 就會採取C++ Compiler編譯, 因此你這個程式仍然被歸類為C++而不是C  發表於 2014-1-18 09:22 PM
Melty Snow [雪靈]
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

Rank: 1

帖子
72
積分
140 點
潛水值
25459 米
7
發表於 2014-1-18 08:20 AM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
c++ const 可以被編成常數, 但取址它就必須分配記憶體空間
我只是想說被取址就有可能會被改變, 應該不能優化, 看來不是這樣
後來想想也合理, const 取址照理說還是 const T* 自己把 const 去掉
不關編譯器的事, 不然就很難分析程式跟優化了

BTW, 樓主可以參考這篇
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部