作者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
1F:→ MOONRAKER:第一个例子有脱裤子放屁之感 11/25 13:15
2F:推 VictorTom:第一个例子把变数改成其他型态也许比较看得出差别:) 11/25 13:16
3F:→ devilarise:谢谢指教@@ 表达能力不太好, 有待磨练 11/25 21:17