偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么f(i = -1, i = -1)是未定義行為?

開發(fā) 后端 前端
最近在讀 order of evaluation violations,其中的一個例子使我很困惑。為什么f(i = -1, i = -1)是未定義行為?下面給出最佳答案。

問題:

最近在讀 order of evaluation violations,其中的一個例子使我很困惑。

1)如果對一個標(biāo)量對象的副作用相對于對這個標(biāo)量對象的另一個副作用是無序的,那么這是未定義行為。

  1. //代碼片段  
  2. f(i=-1,i=-1);//undefined behavior 未定義行為 

在這段代碼中,很明顯 i 是一個標(biāo)量對象。

算術(shù)類型(3.9.1),枚舉類型,指針類型,指針成員類型(3.9.2),空指針類型和被const或volatile修飾的類型(3.9.3)等統(tǒng)稱為標(biāo)量類型。

從這句話中我看不出上面那句代碼有什么分歧的地方。我認為不論***個參數(shù)還是第二個參數(shù)先執(zhí)行,i最終都是-1,并且兩個參數(shù)的值都是-1。

有人能解釋清楚這些嗎?

***答案:

既然運算是無序的,也就不能說分配任務(wù)的指令不能交錯執(zhí)行。也許會選擇***的方式去運行,由CPU的架構(gòu)來決定。引用下面這句話來說明:

如果A在B之前是無序的并且B在A之前是無序的,那么存在兩種可能性:

  • 預(yù)估A和B是無序的:它們可能以任意的順序運行并且可能會重疊(在一個線程的執(zhí)行中,編譯器可能會交錯組織包含A和B的CPU指令)。
  • 預(yù)估A和B是無法確定的順序:它們可能以任意順序運行但是一定不會重疊?;蛘逜在B執(zhí)行之前完成或者B在A執(zhí)行之前完成。下一次執(zhí)行同樣的語句時,執(zhí)行的順序有可能是相反的。

假設(shè)運算執(zhí)行后,把-1存進一個內(nèi)存地址,就這個行為自身而言,這似乎并不會引發(fā)任何問題。但是如果一個指令和另一個指令交錯執(zhí)行操作同一個內(nèi)存地址,你不能說編譯器不會把這些指令優(yōu)化成一個獨立的具有同樣效果的指令集,這樣就會出錯了。

例如,假想把內(nèi)存清零然后再遞減是***效的?,F(xiàn)在開始值是-1,然后就是:

  1. 1 f(i=-1,i=-1)   

也許會變成:

  1. clear i //清空 i  
  2. clear i //清空 i  
  3. decr i //遞減 i  
  4. decr i //遞減 i 

現(xiàn)在i是-2。

這也許是一個假的例子,但可能是真的。

原文鏈接: stackoverflow   翻譯: 伯樂在線 - 閃了腰的企鵝

譯文鏈接: http://blog.jobbole.com/62650/

責(zé)任編輯:林師授 來源: 伯樂在線
相關(guān)推薦

2013-12-12 14:04:28

C編程語言

2019-09-11 09:09:56

++ii++編程語言

2021-08-02 09:31:20

Python工具代碼

2009-09-16 13:53:47

WebForm

2024-04-08 08:18:35

f2JavaScripHTTP

2021-10-13 06:49:15

網(wǎng)絡(luò) IO

2020-07-22 08:01:41

Python開發(fā)運算符

2016-05-19 10:57:57

Android N谷歌開發(fā)者大會

2022-12-09 15:38:54

Cppcheck靜態(tài)分析工具

2024-02-20 22:13:49

SQL語句編程

2025-05-22 08:35:00

Go開發(fā)編程

2022-04-26 16:56:20

行為數(shù)據(jù)數(shù)據(jù)

2020-05-12 09:39:32

計算機時間系統(tǒng)

2021-11-15 06:56:45

MyBatis開發(fā)項目

2018-10-08 14:34:55

CPU實測散片

2012-10-09 11:00:15

IBMdw

2012-08-24 10:47:33

Linux統(tǒng)計工具

2025-02-24 09:00:00

CPUI/O密集型任務(wù)

2009-02-06 14:04:00

曙光I620r-F服務(wù)器評測
點贊
收藏

51CTO技術(shù)棧公眾號