国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

c語言中volatile關(guān)鍵字的作用 c語言volatile是什么意思?

c語言volatile是什么意思?volatile的原意是通常有兩種語句。1. "瞬變2.“多變。這兩種說法都是可行的。定義為volatile的變量意味著該變量可能會(huì)意外更改,因此編譯器不會(huì)假定該變量

c語言volatile是什么意思?

volatile的原意是通常有兩種語句。

1. "瞬變

2.“多變。這兩種說法都是可行的。定義為volatile的變量意味著該變量可能會(huì)意外更改,因此編譯器不會(huì)假定該變量的值。在使用這個(gè)變量時(shí),優(yōu)化器每次都必須小心地重新讀取變量的值,而不是使用存儲(chǔ)在寄存器中的備份。

C語言中volatile關(guān)鍵字的用法是什么?

Volatile提醒編譯器,它后面定義的變量可能隨時(shí)發(fā)生變化,因此每次編譯的程序需要存儲(chǔ)或讀取變量時(shí),它都會(huì)告訴編譯器直接從變量內(nèi)存地址讀取數(shù)據(jù),而無需優(yōu)化變量,從而提供對(duì)特殊地址的穩(wěn)定訪問。。如果沒有volatile關(guān)鍵字,編譯器可以優(yōu)化讀取和存儲(chǔ),并且可以臨時(shí)使用寄存器中的值。如果此變量由另一個(gè)程序更新,則會(huì)出現(xiàn)不一致。

代碼示例:

int square(volatile int*PTR)

]{

int a,b

a=*PTR

b=*PTR

返回a*b

}

由于*PTR的值可能會(huì)意外更改,因此a和b可能不同。因此,此代碼可能不是您期望的正方形!正確的代碼如下:

long square(volatile int*PTR)

{

int a

a=*PTR

return a*a

}

]注意:頻繁使用volatile可能會(huì)增加代碼大小,降低性能,所以合理使用volatile。

C語言中volatile修飾符的作用是什么?

Volatile告訴編譯器每次使用變量時(shí)都要從內(nèi)存中重新讀取它。例如:單片機(jī)中寄存器的定義通常需要用volatile修改,因?yàn)榧拇嫫鞯闹禃?huì)被硬件修改。還有一些全局變量可以被中斷服務(wù)程序修改。例如,如果a=1b=a未定義為volatile,編譯器通常會(huì)將其優(yōu)化為a=1b=1。如果中斷服務(wù)程序在執(zhí)行第一句話之后將a改為2,那么優(yōu)化程序中B的值不會(huì)改變,這不是我們想要的。在a的語句中添加volatile可以解決這個(gè)問題。