[問題] 關於三元運算子

看板C_and_CPP (C/C++)作者 (請輸入ID)時間5年前 (2020/04/21 18:38), 編輯推噓8(8023)
留言31則, 15人參與, 5年前最新討論串1/2 (看更多)
今天翻書突然看到c++條件運算子的問題 像c = a > b ? a : b 我可以理解 但當我翻到下一頁,看到以下程式碼 int main(void) { const char x[2][20] = {"Jason ","at your service\n"}; const char *y = "Quillstone"; for(int i = 0;i<3;i++) { cout << ((i<2)? !i ? x[i]:y:x[1]); } return 0; } 我完全不了解 cout << ((i<2)? !i ? x[i]:y:x[1])這行的運作規則 請問要怎麼解釋那段程式呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.213.185.143 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1587465499.A.E93.html

04/21 18:44, 5年前 , 1F
加上正確括號應該是這樣 ((i<2) ? (!i?x[i]:y) : x[1])
04/21 18:44, 1F

04/21 18:46, 5年前 , 2F
寫這種code的人應該拖出來打...
04/21 18:46, 2F

04/21 18:49, 5年前 , 3F
括號加好就可以啦 不加還這樣寫真的搞死人
04/21 18:49, 3F

04/21 18:54, 5年前 , 4F
??!??!!!?
04/21 18:54, 4F

04/21 19:23, 5年前 , 5F
看不懂就嫌 code 概念嗎 xD
04/21 19:23, 5F

04/21 19:30, 5年前 , 6F
簡單給一個提示: 通常遇到巢狀的 ?: 時, 會是擺在冒
04/21 19:30, 6F

04/21 19:30, 5年前 , 7F
號 (:) 的右手邊做展開, 像是 a ? b : c ? d : e,
04/21 19:30, 7F

04/21 19:30, 5年前 , 8F
這種結構才是必要的, 而且可以排版變成 switch 的長
04/21 19:30, 8F

04/21 19:30, 5年前 , 9F
相, 寫成 a ? b ? c : d : e 這種形式基本上就是條
04/21 19:30, 9F

04/21 19:30, 5年前 , 10F
件沒好好畫簡的結果
04/21 19:30, 10F

04/21 19:31, 5年前 , 11F
試著化簡看看改成上面說的形式你會比較好理解, 其他
04/21 19:31, 11F

04/21 19:31, 5年前 , 12F
形式根本上就是誤用
04/21 19:31, 12F

04/21 19:58, 5年前 , 13F
我不懂樓上舉例 必要性是指?
04/21 19:58, 13F

04/21 20:12, 5年前 , 14F
以這個例子, i < 2 跟 !i 的值域重疊了, 同樣的情況
04/21 20:12, 14F

04/21 20:12, 5年前 , 15F
也會發生在寫 if-else, 變成會有很深的巢狀結構
04/21 20:12, 15F

04/21 20:27, 5年前 , 16F
所以是在這個case 巢狀if比較不好的意思?
04/21 20:27, 16F

04/21 20:59, 5年前 , 17F
編譯器最佳化之後還是一樣啊,好好的補上括號吧
04/21 20:59, 17F

04/22 03:02, 5年前 , 18F
問題就只是為什麼不加括號而已吧,畢竟沒多少人喜歡背各種
04/22 03:02, 18F

04/22 03:02, 5年前 , 19F
運算順序
04/22 03:02, 19F

04/22 03:40, 5年前 , 20F
這就算沒加括號也只有一種解法吧?不懂難在哪 = =
04/22 03:40, 20F

04/22 09:26, 5年前 , 21F
寫短碼又不補括號真的很難讀
04/22 09:26, 21F

04/22 11:30, 5年前 , 22F
花時間看這種code,我還不如去幹茶妹
04/22 11:30, 22F

04/23 14:41, 5年前 , 23F
感謝各位神人的意見,小的非常感謝,(請收下我的膝蓋)
04/23 14:41, 23F

04/23 17:01, 5年前 , 24F
不懂難在哪嗎 那最好希望你的同事也跟你一樣不懂
04/23 17:01, 24F

04/23 17:02, 5年前 , 25F
自己玩沒人看就算了 在團隊中寫這種code就是整人
04/23 17:02, 25F

04/23 19:02, 5年前 , 26F
我也不懂怎麼會不懂別人覺得難在哪,就算你是億中出一
04/23 19:02, 26F

04/23 19:03, 5年前 , 27F
的天才,學任何事物都一蹴可幾,明白不是每個人理解能力
04/23 19:03, 27F

04/23 19:04, 5年前 , 28F
都相同這種事,不就跟尿尿要脫褲子一樣是常識嗎?
04/23 19:04, 28F

04/23 19:04, 5年前 , 29F
或是拉開拉鍊
04/23 19:04, 29F

04/27 12:49, 5年前 , 30F
加括號就可以方便大家解決的事情....
04/27 12:49, 30F

05/01 12:23, 5年前 , 31F
我以為大型程式的宗旨就是簡單閱讀好維護欸XD
05/01 12:23, 31F
文章代碼(AID): #1UdiqRwJ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1UdiqRwJ (C_and_CPP)