条件运算符总是可以用if/else替换?

Chr*_*mer 4 c++ conditional-operator

到目前为止,我认为条件运算符int a = b == 2 ? x1 : x2;总是可以被if/else语句替换.

int a;
if (b == 2)
  a = x1;
else
  a = x2;
Run Code Online (Sandbox Code Playgroud)

两者中的一个之间的选择总是一个品味问题.今天我正在处理一个任务,如果我可以写一个参考将是有用的:

int& a;
if (b == 2)
  a = x1;
else
  a = x2;
Run Code Online (Sandbox Code Playgroud)

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

我对这个结论是对的吗?

Kri*_*son 11

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

这是一个很好的反例,表明当你遇到一个坚持你永远不应该永远不会使用条件表达式的人时,因为它if-else是"简单"而条件"太复杂".

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