成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

問題:

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

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

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

在這段代碼中,很明顯 i 是一個標量對象。

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

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

有人能解釋清楚這些嗎?

***答案:

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

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

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

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

例如,假想把內存清零然后再遞減是***效的。現在開始值是-1,然后就是:

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

也許會變成:

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

現在i是-2。

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

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

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

責任編輯:林師授 來源: 伯樂在線
相關推薦

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

網絡 IO

2020-07-22 08:01:41

Python開發運算符

2016-05-19 10:57:57

Android N谷歌開發者大會

2022-12-09 15:38:54

Cppcheck靜態分析工具

2024-02-20 22:13:49

SQL語句編程

2025-05-22 08:35:00

Go開發編程

2022-04-26 16:56:20

行為數據數據

2020-05-12 09:39:32

計算機時間系統

2021-11-15 06:56:45

MyBatis開發項目

2018-10-08 14:34:55

CPU實測散片

2012-10-09 11:00:15

IBMdw

2012-08-24 10:47:33

Linux統計工具

2025-02-24 09:00:00

CPUI/O密集型任務

2009-02-06 14:04:00

曙光I620r-F服務器評測
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲日韩中文字幕一区 | 激情视频网站 | 最新超碰 | 免费看欧美一级片 | 国产一区二区三区四区在线观看 | 午夜影视免费片在线观看 | 午夜成人免费视频 | 一本一道久久a久久精品综合 | 日韩欧美精品在线 | 蜜桃精品视频在线 | 国产亚洲精品精品国产亚洲综合 | 视频一区二区国产 | 国产精品日韩欧美一区二区三区 | www.天天操 | 最新日韩在线 | 在线免费观看日本 | 一区二区三区免费在线观看 | 欧美激情在线播放 | 久久久久久99 | 国产精品美女在线观看 | 欧美精品一区二区在线观看 | 国产十日韩十欧美 | 91看片在线 | 噜久寡妇噜噜久久寡妇 | 国产在线一区二区三区 | 亚洲精品久久久久中文字幕欢迎你 | 精品国产一区二区三区久久 | 日韩精品一区二区三区视频播放 | 刘亦菲国产毛片bd | 欧美一区二区三区在线看 | 久久精品毛片 | 人人做人人澡人人爽欧美 | 91一区二区三区 | 欧美一级片中文字幕 | 美国一级片在线观看 | 国产精品高清在线 | 亚洲精品大全 | 中文字幕日韩在线观看 | 无码国模国产在线观看 | 日韩精品免费在线观看 | 欧美精品乱码久久久久久按摩 |