亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
int i = 2; i = (i++%3); 執(zhí)行后,為什么i的值為3
[打印本頁]
作者:
sinuos
時間:
2015-04-22 23:48
標(biāo)題:
int i = 2; i = (i++%3); 執(zhí)行后,為什么i的值為3
int i = 2; i = (i++%3);
執(zhí)行后,為什么i的值為3
作者:
windoze
時間:
2015-04-23 00:56
不光是i變成了3,而且因?yàn)槟闩芰诉@個程序,導(dǎo)致月亮偏離了軌道,從此地球上潮汐改變氣候異常,本來一百年內(nèi)的超級地震現(xiàn)在變成99年了,你還不知道錯?
趕快把你的程序刪了把教你寫這種程序的書燒了,要不然這事傳出去被環(huán)保激進(jìn)分子知道了讓你分分鐘掛路燈。
作者:
fender0107401
時間:
2015-04-23 08:27
莫非lz看的是嘆號強(qiáng)的書?
作者:
hellioncu
時間:
2015-04-23 09:01
對i有兩個修改動作,次序不定,結(jié)果未定義
作者:
sinuos
時間:
2015-04-23 09:32
謝謝
回復(fù)
4#
hellioncu
作者:
zsszss0000
時間:
2015-04-23 09:47
@windoze
這么寫,存在什么問題嗎?
我的理解應(yīng)該是先比較++和%的優(yōu)先級吧,應(yīng)該是先算%所以i=2
i++之后是3
不過,C/C++運(yùn)算符的優(yōu)先級和結(jié)合性,老是弄不清楚,容易出問題,還是多用()比較好!
作者:
hanxin83
時間:
2015-04-23 09:56
寫這樣的代碼的人就該被TJJTDS...
作者:
MeRcy_PM
時間:
2015-04-23 10:03
回復(fù)
6#
zsszss0000
未定義吧,跟優(yōu)先級沒啥關(guān)系。
Cpp.png
(101.2 KB, 下載次數(shù): 53)
下載附件
2015-04-23 10:02 上傳
作者:
zsszss0000
時間:
2015-04-23 10:07
警告: ‘i’上的運(yùn)算結(jié)果可能是未定義的 [-Wsequence-point]
復(fù)制代碼
編譯告警上的消息,提示這個地方存在未定義的行為, 這個優(yōu)先級,結(jié)合性的什么的,到現(xiàn)在為止一直沒有搞清楚
回復(fù)
8#
MeRcy_PM
作者:
littledick
時間:
2015-04-23 10:21
按照我10多年前課堂上老師教的分解成這樣。
int i = 2;
int j = i++;
int k = j % 3;
k = k++;
i = k;
復(fù)制代碼
作者:
MeRcy_PM
時間:
2015-04-23 10:22
回復(fù)
9#
zsszss0000
可以搜一下序列點(diǎn)。這是之前在知乎上一個問題看來的
“如果沒有特別指出,操作符的各個操作數(shù)的求值順序是未定的(unsequenced)。如果某個副作用與同一對象的其它副作用相關(guān),或者使用同一對象求值,就是未定義行為!
不能發(fā)url真憂傷。
作者:
windoze
時間:
2015-04-23 11:54
回復(fù)
6#
zsszss0000
優(yōu)先級!=求值順序
優(yōu)先級!=求值順序
優(yōu)先級!=求值順序
重要的事情要重復(fù)三遍
作者:
shang2010
時間:
2015-04-23 21:49
看編譯器怎么理解了,各位先回家睡覺
明天寫個測試,接口完善后晚上繼續(xù)加班
作者:
CUTianrui007
時間:
2015-04-28 10:48
我覺得分析++和--的執(zhí)行順序一點(diǎn)意義也沒有。何必要去記憶那些煩人的運(yùn)算規(guī)則呢?我從來只用括號來保證優(yōu)先級的。
另外,++和--的實(shí)現(xiàn)方式完全和編譯器的規(guī)則有關(guān),所以可以說,這不是語法層面的,而是編譯器層次的。要深入到編譯器
內(nèi)部才能理解這個問題。
作者:
windoze
時間:
2015-04-28 11:49
回復(fù)
15#
CUTianrui007
這和括號沒關(guān)系,加了括號還是錯的。
作者:
idi0t
時間:
2015-04-28 17:09
回復(fù)
16#
windoze
估計(jì)很多人是這樣的:
掃一眼, 這么短的表達(dá)式,一定很簡單.
再一看等號右邊,想當(dāng)然的一定是在討論類似a=b++;類似這種常見的問題.(左邊一個i,有啥好看的);
于是發(fā)表了評論.
作者:
CUTianrui007
時間:
2015-04-28 18:54
原因是這樣的,int i = 2; i = (i++%3); i++是先執(zhí)行i的動作,也就是分解動作是這樣的:
i=(i%3);然后i就等于3了,然后i=3.這時就給i賦給了新值,這個新值是i++后的新值。
所以,自然i就等于3了。
也就是說,無論i=(i++%3),這里做是什么操作,最終結(jié)果永遠(yuǎn)是i++。
我估計(jì),你在不同的編譯器上試驗(yàn),一定會得到不同的結(jié)果的。
實(shí)現(xiàn)方式和具體的編譯器有關(guān)。
作者:
CUTianrui007
時間:
2015-04-28 18:57
強(qiáng)烈建議看匯編代碼,一目了然。
作者:
lin5161678
時間:
2015-04-29 09:26
回復(fù)
19#
CUTianrui007
優(yōu)先級!=求值順序
看得懂嗎
唉 不要被匯編誤導(dǎo) 去搜索一下 未定義行為
PS 不搜索也行 但是拜托你別隨便發(fā)言誤導(dǎo)新人
作者:
ayh423
時間:
2015-05-03 21:12
也就是c c++ 才有此 煩惱的問題
basic delphi 才不會出現(xiàn)呢
代碼簡潔的縮成一行也有他自身的弊病。
作者:
zengit
時間:
2015-05-04 15:25
回復(fù)
12#
windoze
贊
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2