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

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

i =(i,++ i,1)+1; 做?

i =(i,++ i,1)+1; 做?

閱讀有關(guān)未定義行為和序列點的答案后,我編寫了一個小程序:#include <stdio.h>int main(void) {  int i = 5;  i = (i, ++i, 1) + 1;  printf("%d\n", i);  return 0;}輸出為2。哦,天哪,我沒有看到減價的到來!這是怎么回事另外,在編譯上面的代碼時,我得到警告說:px.c:5:8:警告:逗號表達(dá)式的左操作數(shù)無效  [-Wunused-value]   i = (i, ++i, 1) + 1;                        ^為什么?但是可能我的第一個問題的答案會自動回答。
查看完整描述

3 回答

?
隔江千里

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

在表達(dá)式中(i, ++i, 1),使用的逗號是逗號運算符


逗號運算符(由標(biāo)記表示,)是一個二進(jìn)制運算符,它評估其第一個操作數(shù)并丟棄結(jié)果,然后評估第二個操作數(shù)并返回此值(和類型)。


因為它丟棄其第一個操作數(shù),所以通常僅在第一個操作數(shù)具有所需副作用的情況下才有用。如果未對第一個操作數(shù)產(chǎn)生副作用,則編譯器可能會生成有關(guān)該表達(dá)式的警告,但無效。


因此,在上面的表達(dá)式中,i將評估最左邊的值并將其值丟棄。然后++i將被求值并將其遞增i1,并再次++i舍棄表達(dá)式的值,但對to的副作用i是永久的。然后1將被求值,表達(dá)式的值將為1。


相當(dāng)于


i;          // Evaluate i and discard its value. This has no effect.

++i;        // Evaluate i and increment it by 1 and discard the value of expression ++i

i = 1 + 1;  

請注意,上面的表達(dá)式是完全有效的,并且不會調(diào)用未定義的行為,因為在逗號運算符的左操作數(shù)和右操作數(shù)的求值之間存在一個序列點。


查看完整回答
反對 回復(fù) 2019-11-27
?
MM們

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊

引自C11,章節(jié)6.5.17,逗號運算符


逗號運算符的左操作數(shù)被評估為void表達(dá)式;在它的評估與正確操作數(shù)的評估之間存在一個順序點。然后評估正確的操作數(shù);結(jié)果具有其類型和價值。


所以,就您而言,


(i, ++i, 1)

被評估為


i,被評估為無效表達(dá)式,值被舍棄

++i,被評估為無效表達(dá)式,值被舍棄

最終1,值返回了。

因此,最終聲明看起來像


i = 1 + 1;

并i到達(dá)2。我想這可以回答您的兩個問題,


如何i獲得值2?

為什么會有警告消息?

注意:FWIW,因為有一個序列中的點存在于左手操作數(shù)的評價后,表達(dá)等(i, ++i, 1)將不會調(diào)用UB,作為一個可普遍認(rèn)為誤。


查看完整回答
反對 回復(fù) 2019-11-27
?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗 獲得超8個贊

i = (i, ++i, 1) + 1;

讓我們逐步分析它。


(i,   // is evaluated but ignored, there are other expressions after comma

++i,  // i is updated but the resulting value is ignored too

1)    // this value is finally used

+ 1   // 1 is added to the previous value 1

這樣我們得到2?,F(xiàn)在的最終賦值是:


i = 2;

無論是在我現(xiàn)在是覆蓋前。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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