第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“以假亂真”的規(guī)則到底是什么?

“以假亂真”的規(guī)則到底是什么?

C++ C
智慧大石 2019-06-10 16:40:44
“以假亂真”的規(guī)則到底是什么?正如標題所說,“以假亂真”的規(guī)則到底是什么?一個典型的答案是:允許不改變程序可觀察行為的任何和所有代碼轉(zhuǎn)換的規(guī)則。我們不時地從特定的實現(xiàn)中獲取行為,這些行為都歸因于這個規(guī)則。很多次都是錯誤的。那么這條規(guī)則到底是什么。標準沒有明確提到這條規(guī)則作為一節(jié)或一段,那么究竟什么屬于這一規(guī)則的范圍?在我看來,這似乎是一個灰色地帶,標準沒有詳細界定。有人能詳細說明引用標準參考的細節(jié)嗎?注意:將其標記為C和C+,因為它與這兩種語言都相關(guān)。
查看完整描述

3 回答

?
jeck貓

TA貢獻1909條經(jīng)驗 獲得超7個贊

什么是“如-“規(guī)則?

如-規(guī)則基本上定義了在合法的C+程序上允許實現(xiàn)執(zhí)行的轉(zhuǎn)換。簡而言之,所有不影響程序的轉(zhuǎn)換可觀察行為“(確切定義見下文)。

目標是讓實現(xiàn)可以自由地執(zhí)行優(yōu)化,只要程序的行為與C+標準在抽象機器方面指定的語義保持一致。


標準在哪里引入這項規(guī)則?

C+11標準引入了如-“第1.9/1段中的規(guī)則:

這個國際標準中的語義描述定義了一個參數(shù)化的非確定性抽象機器。本國際標準不對一致性實現(xiàn)的結(jié)構(gòu)提出任何要求。特別是,它們不需要復(fù)制或模仿抽象機器的結(jié)構(gòu)。相反,一致性實現(xiàn)需要(僅)模擬(僅)可觀察行為關(guān)于抽象機器的說明如下所示。

此外,一個解釋性腳注還補充說:

這一規(guī)定有時被稱為“以假亂真”規(guī)則。,因為一個實現(xiàn)可以自由地?zé)o視本國際標準的任何要求,只要結(jié)果是好像該要求已經(jīng)被遵守一樣,就可以從程序的可觀察到的行為來確定。例如,一個實際的實現(xiàn)不需要評估一個表達式的一部分,如果它可以推斷它的值沒有被使用,并且沒有產(chǎn)生影響程序的可觀察行為的副作用。


規(guī)則究竟規(guī)定了什么?

第1.9/5段進一步具體規(guī)定:

符合要求的實施執(zhí)行格式良好的程序將產(chǎn)生與具有相同程序和相同輸入的抽象機器相應(yīng)實例的可能執(zhí)行之一相同的可觀察行為。..但是,如果任何此類執(zhí)行包含未定義的操作,則本國際標準不要求使用該輸入執(zhí)行該程序(甚至不要求執(zhí)行第一個未定義操作之前的操作)。

值得強調(diào)的是,這種約束適用于“執(zhí)行格式良好的程序”只有,并且執(zhí)行包含未定義行為的程序的可能結(jié)果是不受約束的。第1.9/4段也明確說明了這一點:

在本國際標準中,某些其他操作被描述為未定義的操作(例如,試圖修改Const對象的效果)。[注:本國際標準不對包含未定義行為的程序的行為施加任何要求..-尾注]

最后,關(guān)于“的定義”可觀察行為“,第1.9/8號決議如下:

對符合標準的實現(xiàn)的最低要求是:

-對易失性對象的訪問嚴格按照抽象機器的規(guī)則進行評估。

-在程序結(jié)束時,所有寫入文件的數(shù)據(jù)應(yīng)與按照抽象語義執(zhí)行程序可能產(chǎn)生的結(jié)果相同。

-交互設(shè)備的輸入和輸出動態(tài)應(yīng)在程序等待輸入之前實際交付。構(gòu)成交互設(shè)備的是實現(xiàn)定義的。

這些統(tǒng)稱為程序的可觀察行為。. [ :每個實現(xiàn)都可以定義抽象語義和實際語義之間更嚴格的對應(yīng)關(guān)系。-尾注 ]


是否有此規(guī)則不適用的情況?

據(jù)我所知,唯一的例外是如-“規(guī)則是復(fù)制/移動省略,即使類的復(fù)制構(gòu)造函數(shù)、移動構(gòu)造函數(shù)或析構(gòu)函數(shù)有副作用,也允許這樣做。

如果滿足某些條件,則允許實現(xiàn)省略類對象的復(fù)制/移動構(gòu)造,即使為復(fù)制/移動操作選擇的構(gòu)造函數(shù)和/或?qū)ο蟮奈鰳?gòu)函數(shù)具有副作用. [...]


查看完整回答
反對 回復(fù) 2019-06-10
?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

在C11中,該規(guī)則從未被稱為該名稱。然而,與C+一樣,C也用抽象機器來定義行為。如果規(guī)則在c11 5.1.2.3p4和p6:

  1. 在抽象機器中,所有表達式都由語義指定。實際的實現(xiàn)不需要評估表達式的一部分,如果它可以推斷它的值沒有被使用,并且沒有產(chǎn)生任何所需的副作用(包括調(diào)用函數(shù)或訪問易失性對象所引起的任何副作用)。

  2. [...]

  3. 對符合標準的實現(xiàn)的最低要求是:

     

    這是程序的可觀察的行為。

    • 訪問

      volatile

      對象嚴格按照抽象機器的規(guī)則進行評估。
    • 在程序結(jié)束時,所有寫入文件的數(shù)據(jù)應(yīng)與按照抽象語義執(zhí)行程序所產(chǎn)生的結(jié)果相同。
    • 交互設(shè)備的輸入和輸出動態(tài)應(yīng)按

      7.21.3

      ..這些要求的目的是使未緩沖或行緩沖的輸出盡快出現(xiàn),以確保提示消息在等待輸入的程序之前實際出現(xiàn)。


查看完整回答
反對 回復(fù) 2019-06-10
  • 3 回答
  • 0 關(guān)注
  • 542 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號