C# 条件运算符

语法:

condition ? first_expression_r : second_expression_r;

说明:

当 condition 为 true 时,返回 first_expression_r,否则返回 second_expression_r。


有些参考书上说 ?: 等价于如下语句:

if (condition)
{
    first_expression_r;
}
else
{
    second_expression_r;
}
实际不是的,因为上述 if 语句中两个表达式都没有返回值。

int n = (1>3) ? 1 : 3;

虽然上述示例有点无聊,因为 1 肯定不会大于 3,但它是一个完整正确的 ?: 示例。

另外,上述括号可以不要,只是为了更便于阅读,以及为了减少更改条件时造成的错误,这里加了括号。

int m = 3;
int n = (m*2 > 5) ? m : 5;
n 是多少呢?3 还是 6,应该是 3,可以看出虽然 m 在条件中被乘以 2,但并没有赋值给 m,也就是说 m 的值并未得到改变。int n = ((m=m*2) > 5) ? m : 5; 这样就是 6 了。

条件运算符为右联运算符

a ? b : c ? d : e
等价于

a ? b : (c ? d : e)
而不是

(a ? b : c) ? d : e
而其运算顺序是从左到右,所以下述示例的结果是 2,而不是 3。

int m = 3;
int n = (m=m*2)>7 ? 1 : m>5 ? 2 : 3;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员查理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值