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

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

Java中,三目運(yùn)算符的結(jié)合性,究竟是從左向右還是從右向左?

Java中,三目運(yùn)算符的結(jié)合性,究竟是從左向右還是從右向左?

飲歌長嘯 2018-07-13 09:57:51
首先,書上說是自右向左,甚至JLS中也明確說明“The conditional operator is syntactically right-associative (it groups right-to-left). Thus, a?b:c?d:e?f:g means the same as a?b:(c?d:(e?f:g)).”但是,如果是右結(jié)合性,有什么辦法證明嗎?我自己試著寫了個證明的例子,但是結(jié)果卻像是在告訴我——三目運(yùn)算符的結(jié)合性是自左向右的。如果是自右向左的結(jié)合性,那么(++y) == 2 ? 0 : -1 應(yīng)該先被執(zhí)行,也就是說y的值應(yīng)該是2。但結(jié)果確是1……我理解的結(jié)合性就是指在優(yōu)先級相同的情況下,看是從左向右還是右向左。 自問自答吧。stackoverflow上找到一種解釋,我覺得還蠻不錯。就用a?b:c?d:e來說。如果是左結(jié)合性,那么表達(dá)式等值于下((a?b:c)?d:e)。于是乎變成了用(a?b:c)的結(jié)果,去決定究竟是返回d或者e。也就是說這個表達(dá)式只可能返回d或者e。這顯然是不正確的。
查看完整描述

4 回答

?
一只萌萌小番薯

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

結(jié)果能出現(xiàn)1,說明確實是右結(jié)合,

y!=2說明(++y)沒執(zhí)行,也說明三目運(yùn)算翻譯成字節(jié)碼時只轉(zhuǎn)換成對應(yīng)的邏輯跳轉(zhuǎn)結(jié)構(gòu),只有邏輯為真的分支才會執(zhí)行


查看完整回答
反對 回復(fù) 2018-07-14
?
九州編程

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

題主你這個不是運(yùn)算符優(yōu)先級的問題 

 

你的問題是下面這個情況

fn1() ? fn2() : fn3();  

三個函數(shù)那個先執(zhí)行,顯然fn1是最先執(zhí)行的,然后根據(jù)結(jié)果執(zhí)行fn2或者fn3

而書上說的 a?b:c?d:e  等價 a?b:(c?d:e)   是和 (a?b:c)?d:e 這個的區(qū)分

 

再舉一個更加普通的例子 

fn1() + fn2() * fn3();  

雖然乘號優(yōu)先級比加號高 但是計算的時候 三個函數(shù)執(zhí)行順序還是 fn1, fn2, fn3,就算你括號括起來 順序也還是不變


查看完整回答
反對 回復(fù) 2018-07-14
?
ibeautiful

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

結(jié)合順序和執(zhí)行順序是不同的,舉個簡單的例子:

a?b:c?d:e?f:g的結(jié)合順序有:a?b:((c?d:e)?f:g)或a?b:(c?d:(e?f:g))兩種結(jié)合方式,所以第二種才是從右向左的結(jié)合方式,而表達(dá)式的執(zhí)行順序都是從左向右


查看完整回答
反對 回復(fù) 2018-07-14
?
汪汪一只貓

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

為什么不加個括號呢,糾結(jié)這些個人感覺并沒有實際的意義。興許你覺得這涉及到原理什么的,可是編程時解決實際問題來著,并不是讓你無謂的給自己增加困擾。

查看完整回答
反對 回復(fù) 2018-07-14
  • 4 回答
  • 0 關(guān)注
  • 2217 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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