看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《yauhh (喲)》之銘言: : 當然善用shortcut-circuit evaluation寫邏輯句子很容易: : (data == NULL) && printf("Data not found.") : || (checkData(data) != 0) && printf("Data is invaild.") : || (modifyData(data) != 0) && printf("Data modification failed.") : || (fireDataChanged(data) != 0) && printf("Observer call failed.") : || (saveDataIntoFile(data) != 0) && printf("Data storage failed.") : || printf("Finally succeed..."); : 邏輯運算一般是 && 優先權高於 ||. : 使用 ? : 還可以把stage埋進去,或者把部份處理完的資料傳回來. : 至於看起來是不是簡單明瞭,邏輯句基本上是最簡單明瞭的, : 看不懂這種句子的人是自己基礎學科沒有學好. 我說啊,這方法真的很糟糕。先不論它容不容易懂好了, 要用這方法有一個必要條件,那就是 printf 必須要有回傳值, 而且回傳值可以進行 true/false 的判斷。 如果回傳 void 那根本編不過。 大部份的情況中,處理錯誤並非只是單純的 printf 而已, 可能還會對之前的指令進行 rollback, 如果要加入這部份的處理,使用 short-circuit 會顯得非常複雜。 事實上我覺得用 exception 才是最簡潔的方式, 當然要特別注意 resource leak 就是了。 結論:short-circuit 在 C_and_CPP 玩一玩就好, 拜託別在大型 project 這樣搞。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.15.163
purpose:同意 12/07 13:54
loveme00835::) 12/07 14:09
loveme00835:↑ = =" 多一對眼睛好噁心 12/07 14:14
lwecloud:EVA貳號機XD 12/07 14:51
legendmtg:同意... 12/07 16:40
yauhh:喔, 那右邊半句應該要寫 (printf(...), true) 這樣就ok了. 12/07 19:53
yauhh:你的論述跟結論跳tone很大,邏輯關聯性不強. 12/07 19:54
yauhh:第二段的對應法只要 (process_err(), true) 就可以了 12/07 19:55
yauhh:程式是可以變通的,不要人講什麼你就只批什麼. 12/07 19:56
yoco315:是ㄚ是ㄚ... 那幹麻不寫成第二或第三篇, 不是簡單許多 12/07 19:56
yoco315:他不會別人講什麼就批什麼,你沒看別人的文章都沒事,只有你 12/07 19:57
yoco315:的文章會從以前到現在都一直被幹 XD 12/07 19:57
yauhh:來我們看一下 printf() 的傳回值是什麼: 12/07 23:09
yauhh:f/ 12/07 23:09
yauhh:起碼應該不會回傳 `void' 這個玩意兒 12/07 23:10
yauhh:我說y寶貝妳現在的身價就只有在BBs上吐嘈而已了? 12/07 23:11
yauhh:妳可是連一篇都寫不出來呢,只會寫一些老生常談的東西 12/07 23:14
yauhh:哦哦,"只有我的文章一直被幹",妳可承認你都因人廢言了. 12/07 23:18
yauhh:那就最好檢討妳自己就好了吧,小y寶貝 12/07 23:18
COLDTURNIP:我也覺得小 y 寶貝最好檢討一下,不過不是 yoco。 12/07 23:52
legendmtg:重點根本不再printf上面...... 12/08 00:16
yoco315:你的文章一直被幹,我只是描述事實 XD 12/08 00:52
yoco315:當然你自我感覺良好無視這些事實大家都知道 XD 12/08 00:52
yoco315:至於我能寫多少東西大家心裡都有底 -___- 12/08 00:53
loveme00835:0.0 12/08 00:54
yoco315:是不是老生常談還是有新技術你自己翻一下就知道了小寶貝qq 12/08 00:54