作者devilarise (Devil)
看板C_and_CPP
標題Re: [問題] 一個超級白吃的問題
時間Wed Nov 25 12:55:41 2009
假設你有某個變數這樣寫
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
→ MOONRAKER:第一個例子有脫褲子放屁之感 11/25 13:15
推 VictorTom:第一個例子把變數改成其他型態也許比較看得出差別:) 11/25 13:16
→ devilarise:謝謝指教@@ 表達能力不太好, 有待磨練 11/25 21:17