跳到主要内容
版本:master

条件表达式

语法

形式语法
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