c++ - 在这种情况下使用多个条件运算符是个好主意吗?

标签 c++ c conditional-operator

我刚刚在 Wikipedia 上看到了这段代码关于条件运算符的文章:

Vehicle new_vehicle = arg == 'B' ? bus      :
                      arg == 'A' ? airplane :
                      arg == 'T' ? train    :
                      arg == 'C' ? car      :
                      arg == 'H' ? horse    :
                      feet;

我对代码做了一点改动,但想法是一样的。你觉得这种条件运算符的用法可以接受吗?它比 if-else 结构要简洁得多,并且使用 switch 肯定会为 bug 带来一系列全新的机会(任何人都失败了?)。此外, if-elses 和 switch 不能用作 R 值,因此您必须先创建变量,初始化它,然后根据需要分配。

我真的很喜欢这个,但我想知道其他人的想法。

但格式是必不可少的。

编辑:我仍然喜欢这个。但我理解那些说“switch 声明是为此而制定的”的人。好吧,也许是这样。但是如果条件是返回 bool 的函数调用呢?或者一百万个你无法打开的东西。

你是不是真的想说服我一个巨大的 if-else 链更好?是的,不知道如何使用条件运算符的程序员不会理解这一点。他们应该学习如何使用它。这并不神秘。

最佳答案

我多次使用这种类型的结构。只要它的格式很好(即不是全部在一行上,使其不可读),我认为它没有问题。

关于c++ - 在这种情况下使用多个条件运算符是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917718/

相关文章:

c++ - 这个打印代码是如何工作的?

c++ - C++ 中具有多个库的单例和工厂

c - 去除 NL 的最佳方法

c - if 和 if else 语句有效,但 else 无效

objective-c - 如何让这个指针保存函数中分配的数据的地址?

c - 错误 : lvalue required in this simple C code?(三元赋值?)

c++ - 不能用 const char * 重载 std::string const & 函数

c++ - 编译时检查变量是否有符号/无符号

c++ - 如何在不同类型的值之间进行选择以传递给多态函数?

javascript - "condition"(? :) operator work in JavaScript as in C?