result += var1 * var2 + var3 % var4 / var5 ;
请问运算顺序是怎么样呢?答案说是:
result += (((var1 * var2) + var3) % (var4 / var5)) ;可是我怎么觉得是:result += ((var1 * var2) +( var3 % (var4 / var5))) ;不知道我错哪里了?谢谢高人指点!

解决方案 »

  1.   

    事实上是result += var1 * var2 + (var3 % var4) / var5 ……
      

  2.   

    * / % 都是乘法运算符,他们之间按照从左到右的顺序。附MSDN:
    当表达式中出现两个具有相同优先级的运算符时,它们根据结合性进行计算。左结合运算符按从左到右的顺序计算。例如,x * y / z 计算为 (x * y) / z。右结合运算符按从右到左的顺序计算。赋值运算符和三元运算符 (?:) 是右结合运算符。其他所有二元运算符都是左结合运算符。
      

  3.   

    两个都不对,请参考:<C# Language Specification>The following table summarizes all operators in order of precedence from highest to lowest:
    Section Category Operators
    14.5 Primary x.y f(x) a[x] x++ x-- new typeof checked unchecked
    14.6 Unary  + - ! ~ ++x --x (T)x
    14.7 Multiplicative * / %
    14.7 Additive + -
    14.8 Shift << >>
    14.9 Relational and type-testing < > <= >= is as
    14.9 Equality == !=
    14.10 Logical AND &
    14.10 Logical XOR ^
    14.10 Logical OR |
    14.11  Conditional AND &&
    14.11  Conditional OR ||
    14.12  Conditional ?:
    14.13  Assignment = *= /= %= += -= <<= >>= &= ^= |=应该是
    result += ((var1 * var2) + ( (var3 % var4) / var5));