gpt4 book ai didi

c++ - 是否可以将每个 if-else 结构替换为等效的条件表达式?

转载 作者:可可西里 更新时间:2023-11-01 17:08:37 26 4
gpt4 key购买 nike

(我不是很需要这个答案,我只是好奇。)

是否可以使用条件运算符 ?: 将每个 if-else 结构替换为等效的条件表达式?

最佳答案

Does every if-else constructs can be replaced by an equivalent conditional expression using conditional operator?

不,你问反了。 if/else的“主体”包含语句,不可能将每条语句都变成一个表达式,比如try、while、break语句,以及声明。然而,许多“声明”实际上是变相的表达:

++i;
blah = 42;
some_method(a,b,c);

所有这些都是由一个表达式(分别为递增、赋值、函数调用)组成的语句,并且可以在条件语句中转换为表达式。

那么,让我们反过来问这个问题,因为听起来您真的很想知道 if/else 语句与三元条件表达式的等价程度:是否可以将每个条件表达式替换为等价的 if/else 语句? 几乎所有,是的。一个常见的例子是 return 语句:

return cond ? t : f;
// becomes:
if (cond) return t;
else return f;

还有其他的表达方式:

n = (cond ? t : f);
// becomes:
if (cond) n = t;
else n = f;

这开始指向无法轻易替换条件表达式的地方:初始化。由于您只能初始化一个对象一次,因此您必须将使用条件的初始化分解为使用显式临时变量:

T obj (cond ? t : f);
// becomes:
SomeType temp;
if (cond) temp = t;
else temp = f;
T obj (temp);

请注意,这更加繁琐/繁琐,如果 SomeType 不能默认构造和分配,则需要一些类型相关的东西。

关于c++ - 是否可以将每个 if-else 结构替换为等效的条件表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1818353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com