亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于條件運算符的疑惑,求大神解答

?int a=8,b=3,c=5;
?double x = (a<c) ? b=c : a ;
?System.out.println("輸出的結果為:"+x);

上式在Eclipse中可以運行

但我把條件運算符稍微改一下

把表達式1與2換個位置?double x = (a<c) ? a : b=c ;

再運行就報錯了

請問大神這是什么情況?

正在回答

6 回答

第一個不打括號也是可以運行的,相當于c給b賦值之后再給x賦值,但是第二個如果不打括號是c要給前面的表達式賦值,這樣編譯是會顯示錯誤的。

0 回復 有任何疑惑可以回復我~
#1

叫我冒哥 提問者

原來如此,謝謝了
2016-09-05 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//57e7a17f0001765c07800385.jpg

我也剛學 你看看說的是這個意思不

0 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//57e3b2ca0001b2cd01200030.jpg還有,如圖中所示:提問者三個字在圓括號中,那么不加圓括號能不能知道你是提問者?

答:有圓括號更容易知道(明白)。所以圓括號明知道加與不加均可,還是為了更簡單讀懂加上吧。

0 回復 有任何疑惑可以回復我~

同學,你都逐一回復了,也給我回復吧?。。?/p>

int a=1,b=2,c=3,d=4;

a=b=c=d;

System.out.println(a);

提示b和c沒使用過。

證明:double x = (a<c) ? a : b=c ; ????? 中 ?????

???????????(a<c) ? a : b也同樣沒有被使用。

( ̄▽ ̄)"

0 回復 有任何疑惑可以回復我~
#1

叫我冒哥 提問者

謝謝了大神
2016-09-28 回復 有任何疑惑可以回復我~

其實也很簡單,第一個不用括號能行,那是因為(a<c)為false,然后它自動判斷為:后面的a了;然而,第二次的為:后面的b=c,它就會混亂,它就不會把(b=c)看做整體,即:是b,但是又有=號又有c,誤判地脫離了三目運算符了

0 回復 有任何疑惑可以回復我~
#1

叫我冒哥 提問者

但是我把a<c改為a>c,第一個能運行,第二個還是不行 這是為什么?
2016-09-04 回復 有任何疑惑可以回復我~

?double x = (a<c) ? a : b=c ;把b=c打個括號,即:double x = (a<c) ? ?a:(b=c ) ;

0 回復 有任何疑惑可以回復我~
#1

叫我冒哥 提問者

這樣確實可以。。 但我想問的是為什么前一個不用括號也能運行呢?
2016-09-04 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于條件運算符的疑惑,求大神解答

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號