运算符的结合性

一个多运算对象的表达式运算时的前后顺序是先看优先级,高优先级先计算,低优先级后计算!在优先级相同的情况下,要看结合性,左结合性的运算符由左向右运算,右结合的运算符由右向左运算!
C语言中具有右结合性的运算符包括所在单目运算符以及赋值运算符(=)和条件运算符。其它都是左结合性!
例如:
表达式a=b=c+d+e*f
式中*号优先级最高,所以首先计算e*f,然后两个+号涉及的三个对象c、d、(e*f)的计算顺序则是左结合,即先计算c+d,然后再计算(c+d)+(e*f)!
因为赋值运算符=的优先级低于算术运算符,所以之后再计算:
a=b=(c+d+e*f),而又因为=的结合性是由右向左,所以接下来再计算:
b=(c+d+e*f),最后才计算a=(b=(c+d+e*f))!!!

-----------------------------------------------------------------
using System.Linq.Expressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<del> myET = x => x * x;
        }
    }
}

=> 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。
原文地址:https://www.cnblogs.com/xushining/p/3685421.html