我不知道数学结果1+2*3*+4*5=121

I dont uderstand math result 1+2*3*+4*5 = 121

本文关键字:我不知道 结果      更新时间:2023-09-26

我使用C#中的代码

  public double CalculateExpression()
    {
        double result = -1;
        var javascriptLangualeType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));
        dynamic obj = Activator.CreateInstance(javascriptLangualeType, false);
        obj.Language = "javascript";
        try
        {
            result = obj.Eval(Expression);
            Result = result.ToString();
        }
        catch (Exception)
        {
            Result = "ERROR";
        }
        return result;
    }

当我想评估这个表达式时(里面是"*"answers"+"):

var expresion = "1+2*3*+4*5";

我本以为我会得到异常r任何其他类型的错误,但结果是121。有人能告诉我为什么这个表达被认为是有效的吗?

我在C#脚本中尝试了这个表达式,结果是121。

谢谢。

因为它这样做:

1 + (2 * 3 * (+4) * 5)

减号更清楚,因为我们通常不使用+4来表示4:

1+2*3*-4*5

扩展到

1 + (2 * 3 * (-4) * 5)

从右到左,*优先于+。

因此(1)+(2*(3*(+(4*5)))=121

从右到左阅读会有所帮助。+符号也被视为+20或"20"。它不是运算符,而是值(4*5)上的正/负号