【发布时间】:2010-12-17 22:00:35
【问题描述】:
到目前为止,我一直认为条件运算符 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 语句替换。
我对这个结论是否正确?
【问题讨论】:
-
我删除了 [c] 标签,因为您的问题在极端案例示例中使用了引用
-
你的意思是
a = x1和a = x2,对吧? -
@SiegeX:谢谢,我对 c 不是很熟悉,我想它也会与 c 有关。
-
您将赋值作为三元 a?b:c 运算符的一部分包含在内......有点像红鲱鱼。在许多情况下 if/else 和三元是不可互换的。 if/else 版本是语句,三元运算符是表达式,因此,例如,您不能将 if/else 版本用作函数调用的参数。
-
@Jefromi:是的,我要脸红了。