Re: [問題] 一個超級白吃的問題

看板C_and_CPP (C/C++)作者 (Devil)時間16年前 (2009/11/25 12:55), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
假設你有某個變數這樣寫 bool isOnOff = false; 因為if判斷式的()中, 只問布林值, 所以false, 0, NULL, 這些在他眼中都一樣, 就是 false 所以無論是負數,正數,或者一串很詭異的記憶體位址, 在他眼中都是 true 因此這樣寫 if(isOnOff) { MessageBox(NULL, "test", "Topic", MB_OK); } 其實就跟 if(false) { MessageBox(NULL, "test", "Topic", MB_OK); } 是一樣的, 大括號內的code不會被執行 ! 這個符號, 在C++就是把結果反轉的意思 所以你看到人家寫 if(!isOnOff)的話 意思就是把裡面的布林值反轉 真變假, 假變真 因此上面的例子改成 if(!isOnOff) { MessageBox(NULL, "test", "Topic", MB_OK); } 這樣就會被執行了 //另外 還有個比較常用的偷懶手法 就是拿來反轉一些開關 例如你寫某個按鈕要控制某個布林開關 你可以試著這樣寫 isOfOff = !isOnOff; 這樣就可以用同一行程式碼 來達到開變關, 關變開的效果 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.101.104

11/25 13:15, , 1F
第一個例子有脫褲子放屁之感
11/25 13:15, 1F

11/25 13:16, , 2F
第一個例子把變數改成其他型態也許比較看得出差別:)
11/25 13:16, 2F

11/25 21:17, , 3F
謝謝指教@@ 表達能力不太好, 有待磨練
11/25 21:17, 3F
文章代碼(AID): #1B3BZGe5 (C_and_CPP)
文章代碼(AID): #1B3BZGe5 (C_and_CPP)