- C# 语句-条件语句-if-else
- C# 语句-条件语句-条件运算符
- C# 语句-条件语句-switch 语句
- C# 语句-循环语句-for 语句
- C# 语句-循环语句-foreach in 语句
- C# 语句-循环语句-while 语句
- C# 语句-循环语句-do 语句
?: 条件实际应该称作条件运算符,属于运算符一类,由于它具有判断特性,所以这里和条件语句归为一类讲解,其语法是:
condition ? first_expression : second_expression;
它的意思是当 condition 为 true 时,返回 first_expression,否则返回 second_expression。
有些参考书上说 ?: 等价于如下语句:
if (condition)
{
first_expression;
}
else
{
second_expression;
}
实际不是的,因为上述 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;
- C# 语句-条件语句-if-else
- C# 语句-条件语句-条件运算符
- C# 语句-条件语句-switch 语句
- C# 语句-循环语句-for 语句
- C# 语句-循环语句-foreach in 语句
- C# 语句-循环语句-while 语句
- C# 语句-循环语句-do 语句