C语言中运算符结合型规律

作者&投稿:刀飘 (若有异议请与网页底部的电邮联系)
c语言中运算符的“结合方向”到底是怎么回事啊!~

一般编译器是把表达式由中缀形式(即一般形式)根据优先级转换为后缀形式,如3+2*5转换为2 5 * 3 +,然后再从左到右运算

运算所需变量为一个的运算符叫单目运算符   
逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++, --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】   
运算所需变量为两个的运算符叫做双目运算符,例如+,-,*,/,%,,>=,>,&,^,|,&&,||,=   
运算所需变量为三个的运算符叫做三目运算符,只有条件表达式【?:】

运算符的结合规律是右结合还是左结合,这个在不同语言和情况下不一定。在很多情况下这与编译器的处理策略有关,要避免使用出错,自己编程序时,最好用好括号以明确的确定运算顺序。避免歧义,

共44个运算符

醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员
坛-单目,9个: ! ~ ++ -- -负号 (类型) *指针 &取地址 sizeof长度
酸-算术,5个: * / % + -减
味-位移,2个: << >>
灌-关系,6个: < <= > >= == 等于 != 不等于
味-位逻,3个: & 按位与 ^ 按位异或 | 按位或
落-逻辑,2个: && 逻辑与 || 逻辑或
跳-条件,1个,三目: ? :
福-赋值,11个: = += -= *= /= %= >>= <<= &= ^= |=
豆-逗号,1个: ,

结合方向自右向左的只有三类:赋值、单目和三目
同一优先级的运算顺序由结合方向决定

c语言运算符号:
1级优先级 左结合
() 圆括号
[] 下标运算符
-> 指向结构体成员运算符
. 结构体成员运算符
2级优先级 右结合
! 逻辑非运算符
~ 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址与运算符
sizeof 长度运算符
3级优先级 左结合
* 乘法运算符
/ 除法运算符
% 取余运算符
4级优先级 左结合
+ 加法运算符
- 减法运算符
5级优先级 左结合
<< 左移运算符
>> 右移运算符
6级优先级 左结合
<、<=、>、>= 关系运算符
7级优先级 左结合
== 等于运算符
!= 不等于运算符
8级优先级 左结合
& 按位与运算符
9级优先级 左结合
^ 按位异或运算符
10级优先级 左结合
| 按位或运算符
11级优先级 左结合
&& 逻辑与运算符
12级优先级 左结合
|| 逻辑或运算符
13级优先级 右结合
? : 条件运算符
14级优先级 右结合
=+ =- =*
=/ =% =
>= < <=
&= ^= |= 全为赋值运算符
15级优先级 左结合
, 逗号运算符

共44个运算符
醋-初等,4个:
(
)
[
]
->
指向结构体成员
.
结构体成员
坛-单目,9个:
!
~
++
--
-负号
(类型)
*指针
&取地址
sizeof长度
酸-算术,5个:
*
/
%
+
-减
味-位移,2个:
<<
>>
灌-关系,6个:
<
<=
>
>=
==
等于
!=
不等于
味-位逻,3个:
&
按位与
^
按位异或
|
按位或
落-逻辑,2个:
&&
逻辑与
||
逻辑或
跳-条件,1个,三目:
?
:
福-赋值,11个:
=
+=
-=
*=
/=
%=
>>=
<<=
&=
^=
|=
豆-逗号,1个:
,
结合方向自右向左的只有三类:赋值、单目和三目
同一优先级的运算顺序由结合方向决定
c语言运算符号:
1级优先级
左结合
()
圆括号
[]
下标运算符
->
指向结构体成员运算符
.
结构体成员运算符
2级优先级
右结合
!
逻辑非运算符
~
按位取反运算符
++
自增运算符
--
自减运算符
-
负号运算符
(类型)
类型转换运算符
*
指针运算符
&
地址与运算符
sizeof
长度运算符
3级优先级
左结合
*
乘法运算符
/
除法运算符
%
取余运算符
4级优先级
左结合
+
加法运算符
-
减法运算符
5级优先级
左结合
<<
左移运算符
>>
右移运算符
6级优先级
左结合
<、<=、>、>=
关系运算符
7级优先级
左结合
==
等于运算符
!=
不等于运算符
8级优先级
左结合
&
按位与运算符
9级优先级
左结合
^
按位异或运算符
10级优先级
左结合
|
按位或运算符
11级优先级
左结合
&&
逻辑与运算符
12级优先级
左结合
||
逻辑或运算符
13级优先级
右结合
?
:
条件运算符
14级优先级
右结合
=+
=-
=*
=/
=%
=
>=
<
<=
&=
^=
|=
全为赋值运算符
15级优先级
左结合

逗号运算符


怎么区分各运算符的结合性?
左结合性:自左至右。右结合性:自右至左。一个运算量两侧的运算符优先级相同时,按运算符的结合性所规定的结合方向处理。C语言中各运算符的结合性分为两种,即左结合性和右结合性。如,算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后...

C语言运算符结合性有什么作用啊?
1、结合性是批在C语言运算符中,如果几个运算符具有相同的优先级时决定先执行哪一个。2、右结合性,就是在表达式中最右边的操作最先执行,然后从右到左依次执行。比如下面这个表达式:int a,b=1,c=2;a=b=c;是先执行b=c呢?还是先执行a=b。如果按前者,a=结果为2,如果按后者,a的结果为1。

c语言中的左结合性和右结合性有什么区别?
左结合:先做a*=a, 因为a=10,a*=可写为a=a*a=100 此时a的值为100 a-=a 可写为a=a-a=0,此时a 的值为0 a+=a可写为a=a+a=0 综上:a+=a-=a*=a的值为0

高分。。什么叫左结合,什么叫右结合
左结合性:意思是从左向右执行运算;右结合性:意思是从右向左执行运算。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合 方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”...

c语言中的运算符怎样才是左结合的呢?
举个例子 a=b+c+d =是右结合的,所以先计算(b+c+d),然后再赋值给a +是左结合的,所以先计算(b+c),然后再计算(b+c)+d C语言中具有右结合性的运算符包括所在单目运算符以及赋值运算符(=)和条件运算符。其它都是左结合性。

C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,谢谢了...
运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合 方向就称为“左结合性”。而自右至...

C语言中的运算符分几类?
C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定...

为什么C语言中单目运算还有结合性?
语言为同级别的运算符规定了结合性。若是自左向右先碰到谁先算谁,则结合性称为自左向右的;若是自右向左先碰到谁先算谁,则结合性称为自右向左的。一般说,除单目、赋值和条件运算符是自右向左结合外,其余都是自左向右结合性的.

C语言中++、--结合性是怎样的
1、++ : 优先级为2,结合规则:自右至左。2、|| 和 && :优先级分别在12和11,结合规则为:自左至右。3、++,--是算术运算符,而 ||, && 是逻辑运算符。4、实际上++x || ++y && ++z;是一个逻辑表达式,整个运算过程遵从的是 || 和 && 的结合规则;而在逻辑的每一个条件中(++x...

C语言中的结合性是怎么回事?
就是先和左侧运算符结合运算,如果右结合,就是先和右侧的运算符结合运算,例如65+67-78,67就是+-共有的运算对象,那么67应该怎么运算呢?C语言规定,+-有相同优先级,具有左结合,那么67应该先与+结合在一起参与运算,得到一个运算结果,然后结果132与78参与下一步运算,电脑计算就是这么机械 ...

襄汾县15097076933: C语言中运算符结合型规律 -
毓伟毕研: 共44个运算符醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员 坛-单目,9个: ! ~ ++ -- -负号 (类型) *指针 &取地址 sizeof长度 酸-算术,5个: * / % + -减 味-位移,2个: << >> 灌-关系,6个: < <= > >= == 等于 != 不等于 味-位逻,...

襄汾县15097076933: c语言中条件运算符的结合性 -
毓伟毕研: C语言中,逗号运算符和条件运算符还有单目运算符是有结合性的,逗号运算符左结合性条件运算符右结合性单目运算符:++、--、+(正)-(负)、*、&、!右结合性

襄汾县15097076933: C语言中运算符的结合性详细说明 -
毓伟毕研: 一般的都是自左向右,只有几个特殊的 如下 !逻辑非 ~安位取反 ++ -- -负号运算 类型转换 *指针运算 &取地址运算 sizeof长度运算符 上面的优先及一样都是自右向左 最后就是 赋值运算了,比如 = += -= *= ...自右向左 优先及小于上面的 所以你的关系运算符自然是自左向右

襄汾县15097076933: C语言算数运算符的结合性C语言中,右结合性 是 自右向左吧?同理,左结合性 是 自左向右吧?加减乘除的结合性是?正负值运算符的结合性呢? -
毓伟毕研:[答案] 四则运算的结合性是自左向右结合,+-做单目运算符解的话是自右向左结合

襄汾县15097076933: 运算符的结合性 -
毓伟毕研: 主要在运算的过程中,结合性不同,运算过程也不同.它不单针对运算符,或变量,而是针对由变量、运算符组合起来的表达式.在表达式的运算过程中,要看运算符的结合型.结合方向自右向左的只有三类:赋值、单目和三目 ,同一优先级的运算顺序由结合方向决定 .例如:x=2,这是赋值,赋值是右结合,即运算从右向左,所以,它的运算过程是:把2赋值给X ;X+2,这是加号,加号是左结合,即运算从左向右,所以,它的运算过程是:先看x的值,然后和2相加

襄汾县15097076933: C语言运算的优先级别和结合方向表是什么的? -
毓伟毕研: 优先级和结合性 C语言中,运算符的运算优先级共分为15级.1级最高,15级最低.在表达式中,优先级较高的先于优先级较低的进行运算. 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理. C语言中...

襄汾县15097076933: C语言中结合性自右向左怎么理解? -
毓伟毕研: C语言中结合性自右向左,简单说就是,从表达式右边开始执行; 1、只有同优先级的运算符才具有结合性“自左至右”或者“自右自左”一说. 2、exp(不同优先级运算符,依据优先级高低进行运算): int a = 1, b =10, c = 30; int a = a * b + ...

襄汾县15097076933: C语言运算符的结合性 -
毓伟毕研: 运算符:用于c语言中执行程序代码运算

襄汾县15097076933: C语言中左右结合性什么意思? -
毓伟毕研: 其实很简单,它就是同优先级操作符在语句中的“运算优先级(或叫顺序)”.比如12/3*4,/和*是同优先级操作符,先算12/3呢还是先算3*4呢?由于/和*都是左→右结合的,所以12/3*4就被解释为(12/3)*4,而不会被解释为12/(3*4).再比如当p是指针时的*p++,由于*和++同级别,它们又是右→左结合的,所以被解释为*(p++)而不会被解释为(*p)++.从以上可知,对于不同优先级的操作符,结合性就起不到什么作用了.个人理解,仅供参考.

襄汾县15097076933: 关于C语言条件运算符的结合顺序?!!! -
毓伟毕研: 楼主注意,结合顺序不等于求值顺序.条件表达式的求值顺序是这样规定的: test ? exp1 : exp2; 条件测试部分test非零,表达式exp1被求值,否则表达式exp2被求值,并且保证exp1和exp2两者之中只有一个被求值.该运算符是右结合的值是要...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网