c++ - 条件运算符总是可以被 if/else 替换吗?

标签 c++ conditional-operator

直到现在我还在想条件运算符 int a = b == 2 ? x1 : x2; 始终可由 if/else 语句替换。

int a;
if (b == 2)
  a = x1;
else
  a = x2;

两者之间的选择总是一个品味问题。今天我正在处理一项任务,如果我可以写的话,引用将会很有用:

int& a;
if (b == 2)
  a = x1;
else
  a = x2;

这是不允许的,我尝试使用条件运算符初始化引用。这很有效,我开始意识到,条件运算符并不总是可以用 if/else 语句替换。

我的结论对吗?

最佳答案

你是对的。条件运算符是一个表达式,而if-else 是一个语句。可以用语句的地方可以用表达式,反之则不然。

这是一个很好的反例,当你遇到某人坚持你不应该,永远,永远,永远不要使用条件表达式时,这是一个很好的反例,因为 if-else 是“简单的”而条件是“太复杂了”。

当 C++ 获取 lambda 表达式时,您可以使用带有 if-else 的 lambda 代替条件。

关于c++ - 条件运算符总是可以被 if/else 替换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475113/

相关文章:

c++ - MakeFile:强制目录下的所有文件包含标题

c++ - 当其他链接库将 stdc++ 链接为动态时,如何将 libstdc++ 链接设置为静态?

angularjs - AngularJS中ng-click中的三元表达式

java - 为什么三元运算符意外地转换为整数?

c# - 这个简单的条件运算符会在编译时优化吗? (。网)

c++ - 预定义大小的静态数组中的元素数

c++ - 确定 wchar_t 是内置类型还是别名

coffeescript - Coffeescript 中的条件运算符

c++ ->>= 在 C 或 C++ 中的含义是什么?

python - 涵盖 C 程序的更多运算符(例如 <、<= 等)的 Python 中前缀到前缀的良好实现?