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

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

突然發(fā)現(xiàn)自己離了電腦就不知道怎么算,為什么,我在死學(xué)嗎?

突然發(fā)現(xiàn)自己離了電腦就不知道怎么算,為什么,我在死學(xué)嗎?

#include<stdio.h> int main() { int x=3; int sum=0; sum=(++x)+(++x)+(--x); printf("%d\n",sum); } 這個(gè)代碼是如何算出14的,求過(guò)程。
查看完整描述

3 回答

已采納
?
onemoo

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

前面一個(gè)回答是有問(wèn)題的,我在后面的留言中指出了錯(cuò)誤所在。


首先說(shuō),像 (++x)+(++x)+(--x) 這樣連續(xù)使用自增減運(yùn)算符的表達(dá)式是有問(wèn)題的,這代碼的行為是未定義的,它得出 10 11 13 ... 什么的都有可能...

具體來(lái)說(shuō),造成問(wèn)題的主要原因有兩點(diǎn):

  1. 運(yùn)算符的操作數(shù)的求值順序是不確定的。

    C標(biāo)準(zhǔn)沒(méi)有規(guī)定運(yùn)算符操作數(shù)的求值順序,C標(biāo)準(zhǔn)只規(guī)定了運(yùn)算符的運(yùn)算順序結(jié)合性。

    比如表達(dá)式 a + b + c * d,根據(jù)運(yùn)算符運(yùn)算順序我們可以確定乘法運(yùn)算符優(yōu)先于加法運(yùn)算符,所以 c * d 先算;而加法運(yùn)算符的結(jié)合性是從左到右,所以再算 a + b,隨后再加上 c * d 的結(jié)果。

    a b c d 這些就叫做運(yùn)算符的操作數(shù),這幾個(gè)變量的具體的值是什么時(shí)候確定的呢? 這幾個(gè)操作數(shù)的求值順序是也按照運(yùn)算順序來(lái)嗎?(先確定c和d的值,再確定a和b的值?) 答案是:不確定! 這幾個(gè)變量的值在運(yùn)算前確定就可以了,具體是誰(shuí)先誰(shuí)后、在哪個(gè)時(shí)點(diǎn)都有可能。

    也許你會(huì)疑惑,a b c d這幾個(gè)變量的值在這個(gè)代碼中不是也不會(huì)變化嗎? 什么時(shí)候確定不都一樣嗎? ?也許是,但是不要忘了很多時(shí)候操作數(shù)不是簡(jiǎn)單的變量,操作數(shù)也可能是其他的表達(dá)式或函數(shù)調(diào)用的返回值,這樣操作數(shù)求值順序的變化也許會(huì)導(dǎo)致操作數(shù)的值也不同(比如你題目中的表達(dá)式就是此例,詳解見(jiàn)下一條)。

  2. 自增減運(yùn)算符是有副作用的(自增就是副作用),在你的這個(gè)表達(dá)式中,這三個(gè)副作用的發(fā)生時(shí)機(jī)也不確定!

    這里不明白的話,請(qǐng)看我在老問(wèn)答區(qū)的一個(gè)回答?http://idcbgp.cn/qadetail/64864??

以上兩點(diǎn)結(jié)合起來(lái)就導(dǎo)致了這個(gè)表達(dá)是的值也是不確定的!

絕對(duì)不要再實(shí)踐中寫(xiě)C標(biāo)準(zhǔn)中未定義行為的代碼!

查看完整回答
1 反對(duì) 回復(fù) 2017-03-17
  • 3 回答
  • 1 關(guān)注
  • 1250 瀏覽

添加回答

舉報(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)