三元运算符 ?: vs if...else

新手上路,请多包涵

在 C++ 中, ?: 运算符是否比 if()…else 语句更快?它们在编译代码中有什么区别吗?

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

阅读 686
2 个回答

取决于您的编译器,但在任何现代编译器上通常没有区别。这是你不应该担心的事情。专注于代码的可维护性。

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

无论编译的代码如何,它们在语义上都是不同的东西。 <cond>?<true expr>:<false expr> 是一个表达式,而 if..else.. 是一个语句。

虽然条件表达式的语法看起来很别扭,但它是一件好事。您被迫提供 <false expr> 并且这两个表达式都经过类型检查。

等价于 if..else.. 在 Lisp、Haskell 等基于表达式的函数式语言中是 ? : 在 C++ 中,而不是 if..else.. 语句。

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

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