“if”条件下的变量赋值

新手上路,请多包涵

我最近刚刚花了一些时间来找出我的代码中由错字引起的错误:

 if (a=b)

代替:

 if (a==b)

我想知道是否有任何特殊情况需要在 if 语句中为变量赋值,或者如果没有,为什么编译器不抛出警告或错误?

原文由 Smash 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答
if (Derived* derived = dynamic_cast<Derived*>(base)) {
   // do stuff with `derived`
}

尽管这经常被引用为反模式(“使用虚拟调度!”),但有时 Derived 类型具有 Base 根本没有的功能(因此,不同的功能),这是打开语义差异的好方法。

原文由 Lightness Races in Orbit 发布,翻译遵循 CC BY-SA 3.0 许可协议

C++17 中,可以使用:

 if (<initialize> ; <conditional_expression>) { <body> }

类似于 for 循环迭代器初始化程序。

这是一个例子:

 if (Employee employee = GetEmployee(); employee.salary > 100) { ... }

原文由 DevBro 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题