C#三元运算符。一时不明白

时间:2018-11-13 21:29:39

标签: c#

为什么变量结果变为零后,每次又又增加1到5?

        for (int i = 5; i >= -5; i--)
        {
            result = i >= 0 ? i : -i;
            Console.Write("{0}\t", result);
        }

输出:

5       4       3       2       1       0       1       2       3       4     5

https://i.stack.imgur.com/bWy2Y.jpg

3 个答案:

答案 0 :(得分:2)

您下面的循环中i为[5、4、3、2、1、0, -1,-2,-3,-4,-5 ]。

   for (int i = 5; i >= -5; i--)

此行:

   result = i >= 0 ? i : -i;

说:

  

如果i大于或等于0,则将i放入结果中。否则将i * -1放入结果中。

对于小于0的值,-1 *该值给您一个正值。

答案 1 :(得分:0)

i高于 0时,它会打印出i(当然,它仍然是正数)。当i切换到小于 小于0时,它会打印出 i

负数的负数是正数(即-1 * -1 = 1),因此仍打印正数。

答案 2 :(得分:0)

三元运算符的作用类似于if else语句,在这种情况下,如果循环为false (i <0)i的第一个值将为-1,但您的else语句声明:返回-1因此:-1 * -1 = 1。

记住

                      **Ternary operator (?) structure**

                         (condition)  ?  1  :  0;
                         If condition is true (?) 1 : (Else) 0;