嵌套的括号括号 - Depth vs Ltr

时间:2018-05-03 02:43:44

标签: c# math tween operator-precedence

public static float BackInOut(float from, float to, float time)
{
    const float s = 1.70158f * 1.525f;
    to -= from;
    if ((time /= .5f) < 1f)
        //     5    6      3      4        0         1      2     7
        return to * .5f * (time * time * ((s + 1f) * time - s)) + from;
    //                  3                     0         1      2
    return to * .5f * ((time -= 2) * time * ((s + 1f) * time + s) + 2f) + from;
}

在第二次返回中是在修改之前(和之后)使用的时间?是

    //                  1                     0         2      3
    return to * .5f * ((time -= 2) * time * ((s + 1f) * time + s) + 2f) + from;

或者之后才这样? IDK?

感谢。

来源:http://robertpenner.com/easing/

修改

试图简化:

using System;
namespace New_folder
{
    class Program
    {
        static public int s { get; set; } = 2;
        static private int _test = 10;
        static public int time
        {
            get
            {
                Console.WriteLine(_test);
                return _test;
            }
            set { _test = value; }
        }
        static public void Main(string[] args)
        {
            var test = (time -= 2) * time * ((s + 1f) * time + s);
        }
    }
}

这表明: 10 8 8

表明我的第二个猜测是正确的,时间仅用于修改后我认为

我想我只是感到困惑。 它进入正确的分支只是为了评估最深的嵌套,然后回到更高的水平回到ltr而不关心它在哪里

感谢

1 个答案:

答案 0 :(得分:1)

简化示例

回答你的问题“在第二次回复中是在修改之前(和之后)使用的时间?是吗?”

这个怎么样?

public int ReturnZeroIfValueIsNegative(int x)
{
    if ((x += 100) <= 100) // the "+=" operator changed the value of x
    {
        return 0;
    }

    return x; // this will return the altered value of x
}

以上内容可以重写为

    x = x + 100;

    if (x <= 100)
    {
        return 0;
    }

    return x;

操作顺序

您可以查看here,了解有关编程语言操作顺序的一般说明。

order of operations in programming languages