int cow;
int cow = true ? false ? false ? false ? 3 : 4 : 5 : 6 : 7;
这个三元运算符如何工作?
为什么它会给我结果呢?
人们已经清楚地理解了所要求的内容。请给我更多减去声望。
答案 0 :(得分:3)
C#三元运算符是if语句的语法糖。
条件运算符(?:)根据布尔表达式的值返回两个值中的一个。以下是条件运算符的语法。
https://msdn.microsoft.com/en-us/library/ty67wk28.aspx?f=255&MSPPError=-2147217396
这是不使用三元组的等效代码。它将始终落入牛= 6区块。
if (true)
{
if (false)
{
if (false)
{
if (false)
{
cow = 3;
}
else
{
cow = 4;
}
}
else
{
cow = 5;
}
}
else
{
cow = 6;
}
}
else
{
cow = 7;
}
答案 1 :(得分:2)
如果您删除了所有无法访问的代码,则最终会以
结束cow = true ? 6 : 7;
6
每次都是你的答案。
顺便提一下你的问题是什么?
答案 2 :(得分:2)
为什么true和false的任何组合都会返回它的值?
这里没有任何布尔组合。此?:
operator会返回第一个或第二个表达式,不是条件本身。
condition ? first_expression : second_expression;
条件必须评估为真或假。如果条件为真, first_expression的评估为,并成为结果。如果条件是 false,second_expression被评估为并成为结果。
由于此运算符为right-associative,因此您的代码可以作为;
true ? false ? false ? false ? 3 : 4 : 5 : 6 : 7
评估为;
true ? false ? false ? (false ? 3 : 4) : 5 : 6 : 7
评估为;
true ? false ? false ? 4 : 5 : 6 : 7
评估为;
true ? false ? (false ? 4 : 5) : 6 : 7
评估为;
true ? false ? 5 : 6 : 7
评估为;
true ? (false ? 5 : 6) : 7
评估为;
true ? 6 : 7
返回6
。