作者LPH66 ((short)(-15074))
看板C_and_CPP
標題Re: [問題] 初學遇到問題
時間Mon Aug 17 05:00:08 2009
※ 引述《Waterpig (waterpig)》之銘言:
: (i>3)?
: printf("Integer "),
: printf("i>3\n")
: :
: printf("Integer "),
: printf("i<=3\n")
: ;
是這樣的
這個式子是長成這個樣子:
(X)?Y,Z:U,V;
運算子優先序中 逗號最低
所以這個就被看成 ((X)?Y,Z:U),V;
這樣一來 V 就成了一定會執行的指令 無論 X 成立與否
這也就是為什麼會多印那一行的原因了
---
至於 Y,Z 不會被拆開的原因則是因為它們被 ? : 包住了
無論如何 被 ? : 包起來的東西就像是包了層括號一樣
(只是左括號成 ? 右括號變成 : 而已)
所以中間的式子就會強制一起看 在那之後才用 , 分開
---
所以除非要寫暗黑 code, 不然 ? : 和 , 合用實在很容易出事....
--
'Oh, Harry, dont't you
see?' Hermione breathed. 'If she could have done
one thing to make
absolutely sure that every single person in this school
will read your interview, it was
banning it!'
---'Harry Potter and the order of the phoenix', P513
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.250.80
推 Waterpig:了解~感謝解答 08/17 07:34
推 christianSK:我也不甚了解 也謝謝~ 08/17 08:29
推 VictorTom:老實說,小弟覺得這種code真是噁心,這樣寫到底好處在哪?? 08/17 09:59
推 williamyu:基本上沒有什麼好處.... 08/17 11:32
→ netsphere:看起來很厲害 08/17 11:50
推 ledia:磨練 debug 時的耐心吧 08/17 11:58
→ MOONRAKER:怎麼都沒有人懷疑為什麼初學就會學到這種code 08/17 13:39
→ MOONRAKER:是誰寫這種戕害身心的書啊 08/17 13:41
推 VictorTom:樓上M大說的真是中肯....XD 08/17 13:43
→ james732:同意MOONRAKER 這種程式出現在初學書 實在很怪.... 08/17 13:50
推 Waterpig:我是看"C/C++入門進階" 作者是郭尚君 這邊只是接受?:用法 08/17 17:28
→ Waterpig: ^介紹 08/17 17:29