下面两组语句实现的效果不是一样吗?
if (lParam & 0x80000000)
{
 if (g_bHasBeenPressed)
 {
 g_bHasBeenPressed=FALSE;
 ::PostMessage (HWND_BROADCAST,g_uMessage,(WPARAM) FALSE,0);
 }
}
else
{
 if (g_bHasBeenPressed==FALSE)
 {
 g_bHasBeenPressed=TRUE;
 ::PostMessage (HWND_BROADCAST,g_uMessage,(WPARAM) TRUE,0);
 }
} if (lParam & 0x80000000) if (g_bHasBeenPressed)
 {
 g_bHasBeenPressed=FALSE;
 ::PostMessage (HWND_BROADCAST,g_uMessage,(WPARAM) FALSE,0);
 }

else if (g_bHasBeenPressed==FALSE)
 {
 g_bHasBeenPressed=TRUE;
 ::PostMessage (HWND_BROADCAST,g_uMessage,(WPARAM) TRUE,0);
 }

解决方案 »

  1.   

    不一样,主要是else在后一段程序中,被默认与第二个if匹配了
      

  2.   

    不一样,主要是else在后一段程序中,被默认与第二个if匹配了
      

  3.   

    不一样,你这个是else 跟哪个 if 配对的问题, 建议看看 C/C++ 的基础. else 会跟最近的那个 还没有else 的if 进行配对. 所以两个代码是不一样的. 每一段明确地写了括号,没问题, else 是跟外层的if 配对的. 下面[这个因为没有 括号 卑鄙起来, 所以会跟 里层的那个 if 配合,如果你不清楚这些关系,多写一些大括号吧. 有益而无害. 可以令代码更清晰