C:在if语句中声明一个变量(或多个)的方法,它将变量定义和测试分开?

人们可以这样做:

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)
{
  ...
}

因为它看起来很像一个循环正在发生 – 而追随我的可怜的笨蛋必须破译这个垃圾.

但是,是否没有语法结构将if语句的优雅结合起来,该语句包含局部变量声明,并能够测试其值不为零的值?

最佳答案 有时可读性和可维护性比保存一行代码更重要.

如果您需要本地变量,那么在这种情况下一定要明确地介绍它,如果您想要它有限,可能会引入一个额外的范围 – 但您也应该考虑是否可以在几个地方使用HIWORD宏 – 这样你根本不需要任何技巧.

点赞