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

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

請(qǐng)教各位一個(gè)問題,求解答: C語(yǔ)言運(yùn)算符優(yōu)先級(jí)問題

請(qǐng)教各位一個(gè)問題,求解答: C語(yǔ)言運(yùn)算符優(yōu)先級(jí)問題

慕的地6264312 2019-10-19 09:26:38
大佬,求助..碰到個(gè)C語(yǔ)言優(yōu)先級(jí)問題題目:請(qǐng)問X的值是多少?#includeintmain(){intx=6;x+=x-=x*x;printf("%d\n",x);}答案是"-60",請(qǐng)問為什么是-60?不是+=比-=優(yōu)先級(jí)高嗎?
查看完整描述

2 回答

?
catspeake

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

在C里,這是一個(gè)未定義行為。
x+=x-=x*x;
^^
12
1處對(duì)x值的讀取與2處對(duì)x值的寫入無關(guān),而兩者之間沒有序列點(diǎn)(sequencepoint)分隔。因而這是一個(gè)未定義行為。
在C++里,直到C++17明確了賦值與語(yǔ)句之間各個(gè)操作數(shù)之間的求值順序。在此之前,這也是一個(gè)未定義行為。
=====================
未定義行為,什么都可能發(fā)生
=====================
+=與-=是同優(yōu)先級(jí)的,右結(jié)合,因而i+=j-=k*l;相當(dāng)于i+=(j-=(k*l))。
=====================
在C++里,自C++17開始,(復(fù)合)賦值運(yùn)算符的右操作數(shù)先于(sequencebefore)左操作數(shù)。(C++已經(jīng)不用序列點(diǎn)的概念了)所以,x+=x-=x*x的計(jì)算順序?yàn)椋?先計(jì)算:x-=x*x1.1-計(jì)算x*x(結(jié)果36)1.2-計(jì)算2處的x(結(jié)果6)1.3-計(jì)算x-=x*x(結(jié)果-30),并賦值(此后x==-30)2計(jì)算1處的x(結(jié)果-30)(x值已經(jīng)修改)3計(jì)算x+=x-=x*x(結(jié)果-60),并賦值(此后x==-60)
=======================
在C中,與C++17之前,1.3處的賦值與2中的x的值的讀取順序是不確定的。
                            
查看完整回答
反對(duì) 回復(fù) 2019-10-19
?
白豬掌柜的

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

和優(yōu)先級(jí)無關(guān),就是簡(jiǎn)單的從右往左執(zhí)行,拆分一下:
x-=x*x得到-30
x+=x得到-60
最后聲明,常規(guī)業(yè)務(wù)代碼不要這么寫
                            
查看完整回答
反對(duì) 回復(fù) 2019-10-19
  • 2 回答
  • 0 關(guān)注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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