|
|
1
11
if/else的“body”包含语句,不可能将每条语句都转换为表达式 ,例如try、while、break语句以及声明。然而,许多“陈述”实际上是伪装的表达:
那么,让我们把问题反过来,因为听起来你真的想知道if/else语句与三元条件表达式的等价程度: 每个条件表达式都能被等价的if/else语句替换吗? 几乎所有的,是的。一个常见的例子是返回语句:
还有其他表达方式:
它开始指向条件表达式无法轻松替换的位置: . 由于只能初始化对象一次,因此必须将使用条件的初始化分解为使用显式临时变量:
请注意,这要繁琐得多,如果SomeType不能默认构造和分配,则需要依赖于类型的东西。 |
|
|
2
4
从表面上看,不是。条件运算符是一个表达式(即它有一个值),而if/else是一个语句(因此没有值)。它们在语言语法中满足不同的“需求”。
然而,话虽如此,我不确定这是否只是一种好奇。。。 |
|
|
3
2
不,当然不是。原因已经提到,还有更多!
查看声明的位置。这不是一种常用的技术,但它可以用于COM等情况,其中每个调用都返回HRESULT,成功时(几乎总是)为零(s_OK),失败时为非零,因此您可以编写如下内容:
|
|
|
4
1
不能总是被
|
|
|
5
1
原则上,是的:
与使用程序(更自然)相比,这允许
|
|
|
6
1
使用条件运算符将生成表达式,并且条件运算符的两个潜在结果必须“兼容”(可转换为相同类型)。
|
|
|
7
1
条件运算符希望在
而if-else版本则相当标准:
现在,也就是说,你能接受任何一个程序并编写一个功能类似的程序,而不使用if-else吗?当然可以。但这并不意味着这是个好主意 |
|
|
8
0
海湾合作委员会
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |