Re: [閒聊] 尋求比nest-if更優美的解決辦法

看板C_and_CPP作者 (CloudEX)時間14年前 (2010/12/07 03:52), 編輯推噓4(408)
留言12則, 7人參與, 最新討論串12/21 (看更多)
※ 引述《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..."); : 邏輯運算一般是 && 優先權高於 ||. : → bdvstg:我看不懂... >"< 判斷&&列印||判斷&&列印...; 12/07 09:12 班門弄斧一下: 這樣的邏輯判斷其實只要知道"||"跟"&&"運算子的行為,其實並不難理解。 ||運算子的情況: A || B A和B只要其中一個成立(為TRUE),運算式即成立 如果A成立 => 運算式成立 (不做B,B會直接被忽略) A不成立 => 檢查B是否成立(做B) &&運算子的情況: A && B A和B兩者皆必須成立(皆為TRUE),運算式才成立 如果A成立 => 檢查B是否也成立(做B) A不成立 => 運算式不成立 (不做B,B會直接被忽略) 再回到yauhh板友的sample: 因為&&優先度高於||,所以你可以這樣看 ╭ A1╮ ╭ B1╮ ╭ A2╮ ╭ B2╮ ( 判斷(1) && 列印(1) ) || ( 判斷(2) && 列印(2) ) ...下略 ╰────α────╯ ╰────β────╯ &&運算子的情況: 如果A1成立 => 檢查B1是否也成立(做B1) 判斷(1)成立 => 印錯誤訊息 (data == NULL) printf("Data not found.") 如果A1不成立 => 運算式α不成立(不做B1,B1會直接被忽略) (data != NULL) 但是因為後面還有||運算子,所以 ||運算子的情況: α不成立 => 檢查β是否成立(做β) 而運算式β又是一個&&運算式,所以又回到上面 &&運算子的情況 依此類推 -- 打完之後才發現光用文字解釋沒有想像中的容易orz 真是佩服板上的圖文詳解強者... -- ╭──╮┌──╮╭──╮╭──╮╭──╮╭─╮╮╭─╭╮ │ ││ ││ ││ ││ ││ │││ ││ NO16 │ ├╮│ ─┤│ ┘││ ││ ─ ││ ││ │█      █nyctenvoy │ ││ ─┤│╮╭╯│││││╭╮│││ │╰╮╭╯█ ██ ██ ███ ╰──╯└──╯╰╯╰ ╰╯╯╯╰╯╰╯╰╯─╯ ╰╯ ██ █▆◢ ▉█ ▊▊█ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.136.254.32

12/07 12:15, , 1F
I don't care. 我不知道他在做啥不是我看不懂, 而是看
12/07 12:15, 1F

12/07 12:15, , 2F
到 && 就沒繼續下去的必要
12/07 12:15, 2F

12/07 12:41, , 3F
看懂了.... 感恩~~ (之前不曾想過可以這樣用)
12/07 12:41, 3F

12/07 13:43, , 4F
我只是針對語意上面解釋,至於這種做法好不好,我想我
12/07 13:43, 4F

12/07 13:44, , 5F
還是留給其他人評論吧XD
12/07 13:44, 5F

12/07 13:44, , 6F
應該說語法才對
12/07 13:44, 6F

12/07 15:56, , 7F
圖好精美XDDDD
12/07 15:56, 7F

12/07 19:42, , 8F
大哥,比起此串第三篇,這個寫法你花了一篇文章來解釋
12/07 19:42, 8F

12/07 19:43, , 9F
要說這個多好讀實在是騙鬼阿.. 好讀不好讀是相對的..
12/07 19:43, 9F

12/07 19:43, , 10F
比起組合語言這大概是好讀啦,但是明明還很多比這好的寫法
12/07 19:43, 10F

12/07 19:51, , 11F
你的圖解超酷的 :D
12/07 19:51, 11F

12/08 10:05, , 12F
推~~有圖解
12/08 10:05, 12F
文章代碼(AID): #1C_Q-0cp (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 12 之 21 篇):
文章代碼(AID): #1C_Q-0cp (C_and_CPP)