作者Su22 (裝配匠)
看板java
標題[問題] Java的if判斷問題
時間Sun Sep 13 21:06:35 2015
程式碼
boolean c = false;
if (c = false){
System.out.println("A");
}else{
System.out.println("B");
}
run出來是"B"
但if後面的括號不是判斷出來應該是boolean值嗎?
為何可以用c=false這樣的指派動作而沒有編譯錯誤?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.80.25
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1442149597.A.CF6.html
1F:→ Expsun: 因為false是boolean 09/13 21:11
2F:→ ssccg: c = false這個expression的值就是c,c是boolean 09/13 21:12
3F:推 gpctv: 因為你把false又給了c啊!!所以正確應該是c==false 09/13 21:19
4F:推 abowspy: 樓上正解 09/13 21:36
原來是醬子阿 感謝各位
※ 編輯: Su22 (36.227.80.25), 09/13/2015 21:40:13
5F:→ jtorngl: 既然c是boolean了,if(c){} 就可以了不用 if(c == true) 09/13 22:24
6F:→ jtorngl: 然後把c取的有意義的名稱,就 if(isC) 之類就容易理解 09/13 22:24
7F:推 now99: == 09/14 12:44
8F:→ cha122977: 沒那麼複雜,就是你少打一個等號這樣… 09/15 01:01
9F:推 Dnight: 因為c=false的時候他會把false存到c裡 09/15 08:32
10F:→ Dnight: if(c) compile還是合法的值,if裡面就是要擺boolean 09/15 08:32
11F:推 Timba: 反正 if( C ) C是boolean 型態就對 09/15 20:24
12F:→ adrianshum: op 的 code 寫該是 if (!c) { 才對呀... 09/15 23:11
13F:→ dou0228: 用 if (false == c), 萬一不小心寫成 =,也會 compile err 09/16 22:39
14F:→ adrianshum: 樓上:大家一直在說是 bool 根本不該比較true/false 09/18 21:32