以下是我的程式在debug中我觀察到
void CheckKey::SetState(int n, BOOL state)                    1
{
if(state==TRUE) //TRUE 要將他設為壓下狀態             2
{
if(keys[n]==FALSE) //原先非壓下狀態           3
{   
//此為新壓下者
    keys[n]=TRUE;                             4
news[n]=TRUE;                         5
}
else //原先就是壓下狀態                       6
news[n]=FALSE; //過期的壓下狀態       7
}
else //FALSE 要將他設為非壓下狀態                     8
keys[n]==FALSE;                               9
}                                                             10
當我的state參數為FALSE時,當執行到2行過後,不是跳到8行去執行else,而是跳到10行去。個別函數有bug我們清楚了避免去用也罷了,這個問題可大了,總不能喊我今後不用else呀!

解决方案 »

  1.   

    至少也要跳到第九行才对, 奇怪.还有, BOOL 类型的判断用if(state)和if(!state)就好了,不用"==".
      

  2.   

    else //FALSE 要將他設為非壓下狀態                     8
    keys[n]==FALSE;   为什么是 keys[n]==FALSE; ???? "=="????
      

  3.   

    我用==TRUE/==FALSE是為了看起來清楚,這沒啥好討論的。關鍵問題是流程的錯誤。
      

  4.   

    我是说你的第九排:
    keys[n]==FALSE;                               9
    为什么用"=="?"我用==TRUE/==FALSE是為了看起來清楚"
    _____________________
    :)
      

  5.   

    大约是第九排没有意义,.NET给你优化掉了吧.