条件运算符vs if else else

时间:2012-12-07 16:01:40

标签: c# java c++ c conditional

如果我想实现一些可以用这两种方式实现的条件代码。那么哪种方式更好的条件运算符?:或if..then..else ??

3 个答案:

答案 0 :(得分:4)

这取决于。通常,您需要主要的活动流程 在代码的结构中表示。如果关键点 算法的一部分是变量x被初始化 最好的解决方案是使用条件运算符:

x = condition ? f1() : f2();

如果决定是理解内容的关键问题 继续,然后你会更喜欢if。在实践中,这意味着 如果两者都合理可行,您将使用?:。该 关键是“合理地” - 如果你发现你正在使用 子表达式中的逗号运算符,子表达式都有 副作用,然后使用?:可能不“合理”。

编辑:

当您使用?:运算符时,除了最简单的运算符外 例如,你应该像if那样格式化它,例如:

x = condition
    ? complex_expression_1
    : complex_expression_2;

我经常这样做。 (有一个特殊情况,我会推 它:如果我可以将整个功能减少到一次返回 声明。我仍然不会允许逗号的副作用 运算符,但我有时会使用更复杂的表达式 比我原本不会。)

答案 1 :(得分:0)

如果不完全相同,非常接近。即使字节码存在轻微差异。您可以随时进行性能测试。

检查字节码检查javap and jad

答案 2 :(得分:0)

它取决于编译器,但在现代编译器中,if else和三元运算符之间没有区别。不要相信“如果我使用条件运算符,编译器将始终生成更高效的代码”。