条件表达式
语法
| 形式 | 语法 |
|---|---|
| 1 | 表达式 ? 表达式 : 表达式 |
| 2 | 表达式 ?? 表达式 |
描述
条件表达式被用于根据给定的条件表达式的值,选择性的从两个表达式中返回一个值。
形式1: 三元条件表达式(? :)
三元条件表达式分为三个部分,分别是:
条件表达式 ? 真值表达式 : 假值表达式
在对三元条件表达式求值时,首先会计算 条件表达式 的值;如果条件表达式的类型不是 bool,那么按照
隐式类型转换规则 将其转换为 bool。
如果其值为 true,则对 真值表达式 求值;否则对 假值表达式 求值。并将求值结果作为整个三元条件表达式的值。
为了能够根据条件来选择不同的值分支,三元条件表达式是 定序 的。 GS 保证对条件表达式优先于真/假值表达式求值。
形式2: 空合并表达式(??)
空合并表达式分为两个部分,分别是:
左 表达式 ?? 右表达式
在对空合并表达式求值时,首先会计算 左表达式 的值,如果其值是 void 或者 nil,则对 右表达式 求值,并将其值作为整个空合并表达式的值;
否则将 左表达式 的值作为整个空合并表达式的值。
为了能够根据左表达式的值来选择不同的值分支,空合并表达式是 定序 的。 GS 保证对左表达式优先于右表达式求值。
示例
int a = 10;
int b = 20;
int c = (a > b) ? a : b; // c 的值为 20
int? e = nil;
int f = e ?? 100; // b 的值为 100