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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

未定義的行為和序列點(diǎn)

未定義的行為和序列點(diǎn)

大話(huà)西游666 2019-05-20 16:51:30
什么是“序列點(diǎn)”?未定義的行為和序列點(diǎn)之間的關(guān)系是什么?我經(jīng)常使用有趣和復(fù)雜的表達(dá)方式a[++i] = i;,讓自己感覺(jué)更好。我為什么要停止使用它們?如果您已閱讀此內(nèi)容,請(qǐng)務(wù)必訪(fǎng)問(wèn)后續(xù)問(wèn)題重新加載未定義的行為和序列點(diǎn)。
查看完整描述

4 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

這是我之前的答案的后續(xù)內(nèi)容,包含C ++ 11相關(guān)資料。。


先修課程:關(guān)系(數(shù)學(xué))的基礎(chǔ)知識(shí)。


在C ++ 11中沒(méi)有序列點(diǎn)是真的嗎?

是! 這是非常正確的。

序列點(diǎn)已被C ++ 11中的Sequenced BeforeSequenced After(以及UnsequencedIndeterminately Sequenced關(guān)系所取代。


究竟是什么'之前排序'的事情?

排序之前(§1.9/ 13)是一種關(guān)系,它是:

在由單個(gè)線(xiàn)程執(zhí)行的評(píng)估之間并引發(fā)嚴(yán)格的部分順序1

正式它意味著給定任意兩個(gè)評(píng)價(jià)(見(jiàn)下文) AB,如果A之前測(cè)序 B,則執(zhí)行A 應(yīng)當(dāng)先執(zhí)行B。如果A之前沒(méi)有進(jìn)行測(cè)序BB之前沒(méi)有進(jìn)行測(cè)序A,然后AB未測(cè)序 2。

評(píng)價(jià)AB不定測(cè)序或者當(dāng)A前進(jìn)行測(cè)序BB之前測(cè)序A,但它是未指定的,其3。

[注釋] 
1:嚴(yán)格偏序是一個(gè)二元關(guān)系 "<"在一組P其是asymmetric,和transitive的,即,對(duì)于所有的ab以及cP中,我們有:
........(I)。如果a <b則?(b <a)(asymmetry); 
........(II)。如果a <b且b <c則a <c(transitivity)。
2:未經(jīng)測(cè)試的評(píng)估的執(zhí)行可能重疊。
3:不確定順序的評(píng)估不能重疊,但可以先執(zhí)行。


在C ++ 11的上下文中,“評(píng)估”一詞的含義是什么?

在C ++ 11中,表達(dá)式(或子表達(dá)式)的評(píng)估通常包括:

現(xiàn)在(§1.9/ 14)說(shuō):

一個(gè)完整的表達(dá)相關(guān)聯(lián)的每個(gè)值的計(jì)算和副作用測(cè)序之前與相關(guān)聯(lián)的每一個(gè)值的計(jì)算和副作用進(jìn)行評(píng)估下一個(gè)完整表達(dá)

  • 瑣碎的例子:

    int x; x = 10; ++x;

    在計(jì)算值和副作用之后,對(duì)與之相關(guān)++x的值計(jì)算和副作用進(jìn)行排序x = 10;


因此,未定義行為與上述事物之間必然存在某種關(guān)系,對(duì)吧?

是! 對(duì)。

在(§1.9/ 15)中已經(jīng)提到過(guò)

除非另有說(shuō)明,否則對(duì)個(gè)體操作員的操作數(shù)和個(gè)別表達(dá)式的子表達(dá)式的評(píng)估是不確定的4

例如 :

int main(){
     int num = 19 ;
     num = (num << 3) + (num >> 3);}
  1. 對(duì)操作+員的操作數(shù)的評(píng)估相對(duì)于彼此是不確定的。

  2. 對(duì)操作數(shù)<<>>操作符的評(píng)估相對(duì)于彼此是不確定的。

4:在一個(gè)程序的執(zhí)行過(guò)程中被評(píng)估一次以上的表達(dá),未測(cè)序不定測(cè)序其子表達(dá)式的評(píng)估不需要在不同的評(píng)價(jià)一致的方式進(jìn)行。

(§1.9/ 15)運(yùn)算符操作數(shù)的值計(jì)算在運(yùn)算符結(jié)果的值計(jì)算之前排序。

這意味著在x + y值計(jì)算之前,x并且y在計(jì)算值之前對(duì)其進(jìn)行排序(x + y)。

更重要的是

(§1.9/ 15)如果對(duì)標(biāo)量物體的副作用相對(duì)于其中任何一個(gè)都沒(méi)有排序

(a)對(duì)同一標(biāo)量物體的另一個(gè)副作用

要么

(b)使用相同標(biāo)量對(duì)象的值進(jìn)行值計(jì)算。

行為未定義

例子:

int i = 5, v[10] = { };void  f(int,  int);
  1. i = i++ * ++i;  // Undefined Behaviour

  2. i = ++i + i++;  // Undefined Behaviour

  3. i = ++i + ++i;  // Undefined Behaviour

  4. i = v[i++];     // Undefined Behaviour

  5. i = v[++i]:     // Well-defined Behavior

  6. i = i++ + 1;    // Undefined Behaviour

  7. i = ++i + 1;    // Well-defined Behaviour

  8. ++++i;          // Well-defined Behaviour

  9. f(i = -1, i = -1); // Undefined Behaviour (see below)

當(dāng)調(diào)用函數(shù)(函數(shù)是否為內(nèi)聯(lián)函數(shù))時(shí),與任何參數(shù)表達(dá)式相關(guān)聯(lián)的每個(gè)值計(jì)算和副作用,或者使用指定被調(diào)用函數(shù)的后綴表達(dá)式,都會(huì)在執(zhí)行每個(gè)表達(dá)式或語(yǔ)句之前對(duì)其進(jìn)行排序。叫功能。[ 注意: 與不同參數(shù)表達(dá)式相關(guān)的值計(jì)算和副作用未被排序。- 結(jié)束說(shuō)明 ]

表達(dá)式(5),(7)(8)不要調(diào)用未定義的行為。有關(guān)更詳細(xì)的說(shuō)明,請(qǐng)查看以下答案。


最后的說(shuō)明

如果您發(fā)現(xiàn)帖子中有任何缺陷,請(qǐng)發(fā)表評(píng)論。高級(jí)用戶(hù)(代表> 20000)請(qǐng)不要猶豫,編輯帖子以糾正拼寫(xiě)錯(cuò)誤和其他錯(cuò)誤。


查看完整回答
反對(duì) 回復(fù) 2019-05-20
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

我猜這個(gè)改變有一個(gè)根本原因,讓舊的解釋更清晰,不僅僅是裝飾性的:原因是并發(fā)性。未指定的細(xì)化順序僅僅是選擇幾個(gè)可能的連續(xù)排序中的一個(gè),這與排序之前和之后完全不同,因?yàn)槿绻麤](méi)有指定的排序,則可以進(jìn)行并發(fā)評(píng)估:舊規(guī)則不是這樣。例如:

f (a,b)

先前要么是b,要么是b,然后是a?,F(xiàn)在,可以使用交錯(cuò)的指令或甚至在不同的核上評(píng)估a和b。


查看完整回答
反對(duì) 回復(fù) 2019-05-20
?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

C99(ISO/IEC 9899:TC3)這似乎從這個(gè)討論迄今以下steteents是關(guān)于及其評(píng)價(jià)問(wèn)題作了缺席。

[...]子表達(dá)式的評(píng)估順序和副作用發(fā)生的順序都是未指定的。(第6.5節(jié)第67頁(yè))

操作數(shù)的評(píng)估順序未指定。如果嘗試修改賦值運(yùn)算符的結(jié)果或在下一個(gè)序列點(diǎn)之后訪(fǎng)問(wèn)它,則行為[sic]未定義。(第6.5.16節(jié)第91頁(yè))


查看完整回答
反對(duì) 回復(fù) 2019-05-20
  • 4 回答
  • 0 關(guān)注
  • 832 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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