一个可以做到这一点:

case WM_COMMAND:
if (WORD wNotifyCode = HIWORD(wparam))
{
  ...
}

一个可以做到的:
case WM_COMMAND:
{
  WORD wNotifyCode = HIWORD(wparam);
  if (wNotifyCode > 1) {
    ...
  }
}

但是一个人做不到:
case WM_COMMAND:
if ((WORD wNotifyCode = HIWORD(wparam)) > 1)
{
  ...
}

我认为在这里使用for语句会引起误解:
case WM_COMMAND:
for (WORD wNotifyCode = HIWORD(wparam); wNotifyCode > 1; wNotifyCode = 0)
{
  ...
}

因为看起来很像是一个循环正在发生-而追随我的可怜的schmuck必须破译这个垃圾。

但是,是否没有语法结构将if语句的优雅(包括局部变量声明)与测试除零以外的值的能力结合在一起?

最佳答案

有时,可读性和可维护性比保存一行代码更为重要。

如果,您根本需要局部变量,那么在这种情况下,一定要明确地引入它,如果您希望限制它,则可以引入一个额外的作用域-但是您还应该考虑是否可以只在一个变量中使用HIWORD宏几个地方-这样,您根本不需要任何技巧。

09-06 18:24