c语言中运算符的结合方向什么时候从左至右,什么时候从右至左

如题所述

左结合性:自左至右。

右结合性:自右至左。

一个运算量两侧的运算符优先级相同时,按运算符的结合性所规定的结合方向处理。C语言中各运算符的结合性分为两种,即左结合性和右结合性。

如,算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。

而最典型的右结合性运算符是赋值运算符,如x=y=z,由于“=”的右结合性,应先执行y=z,再执行x=(y=z)运算。



扩展资料

C语言中的运算符

(1)算术运算符(+,-,*,/,%,++,--)。

(2) 关系运算符(<, >, <=, >=, ==, ![KG-*8]=) 。

(3) 逻辑运算符(!, &&, ||) 。

(4) 位运算符(<<, >>, ~, |, ^, &) 。

(5)赋值运算符(=,及其双目运算符的扩展赋值运算符)。

(6)条件运算符(?:)。

(7)逗号运算符(,)。

(8) 指针运算符(*, &) 。

(9)求字节数运算符(sizeof)。

(10)强制类型转换运算符((类型))。

(11) 分量运算符(·, ->) 。

(12)下标运算符([])。

(13)圆括号运算符(())。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-18
预先定好的
赋值符号=是右结合的
int a,b;
a=b=3;//类似这样的情况时左右结合才有意义
考虑左右结合的时候,是考虑中间的那个变量b,因为=是右结合的,所以先执行b=3,然后执行a=b

+是左结合的
int a=2,b=3,c=4;
a=b+c+5;
因为+优先级比=高,所以先运算+,因为+是左结合的,所以先计算b+c,然后计算7+5,最后执行a=12;
第2个回答  2022-04-19
双目运算符一般都是从左到右
单目运算符,赋值运算符,三目运算符一般都是从右到左
第3个回答  2009-08-18
! ~ ++ -- + - * & 强制类型名 sizeof ?: = += -= *= /= %= =&= ^= |= 《= 》= 是自右向左的,其他都是自作向右本回答被提问者采纳
第4个回答  2009-08-18
这个也和具体的编译器有关呀~
一般单目运算符是右结合
双目运算符从左到右吧(不考虑优先级)
相似回答