发布网友 发布时间:2022-05-02 01:26
共4个回答
热心网友 时间:2022-06-26 04:55
在标准C语言的文档里,对操作符的结合性并没有作出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。 每个操作符拥有某一级别的优先级,同时也拥有左结合性或右结合性。优先级决定一个不含括号的表达式中操作数之间的“紧密”程度。例如,在表达式a*b+c中,乘法运算的优先级高于加法运算符的优先级,所以先执行乘法a*b,而不是加法b+c。 但是,许多操作符的优先级都是相同的。这时,操作符的结合性就开始发挥作用了。在表达式中如果有几个优先级相同的操作符,结合性就起仲裁的作用,由它决定哪个操作符先执行。像下面这个表达式: int a,b=1,c=2; a=b=c; 我们发现,这个表达式只有赋值符,这样优秀级就无法帮助我们决定哪个操作先执行,是先执行b=c呢?还是先执行a=b。如果按前者,a=结果为2,如果按后者,a的结果为1。 所有的赋值符(包括复合赋值)都具有右结合性,就是说在表达式中最右边的操作最先执行,然后从右到左依次执行。这样,c先赋值给b,然后b在赋值给a,最终a的值是2.类似地,具有左结合性的操作符(如位操作符“&”和“|”)则是从左至右依次执行。热心网友 时间:2022-06-26 04:55
运算符的结合方向(顺序)决定了计算的顺序。条件运算符(? :)的结合方向是从右到左,也即运算符的匹配顺序是从右往左的。
下面举例说明结合顺序从右到左的含义:
int a=1, b=3, c=2, d;ps:虽然计算结果相同,但是计算的顺序是完全不同的。
热心网友 时间:2022-06-26 04:56
从左到右扫描,从右往左计算。 比如一个赋值语句,a=b;首先从b地址取数据,然后写到a地址。所以是从右到左计算。热心网友 时间:2022-06-26 04:57
怎么说呢 =运算是从右到左 就是 赋值 把右边的赋值给左边。 +法运算就是 从右到左了 明白了。