当前位置:首页 > 资格考试 > 正文

C语言中综合规律从右至左到从左至右有什么区别

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)圆括号运算符(())。

C语言中运算顺序“至左向右”和“至右向左”是怎么回事?

不同的函数 内部的执行 顺序不一样 就像先乘除后加减 一样 ! 至左向右 就是不管表达式是怎么样的 按照从左到右 计算机顺序执行 同理至右向左

C语言中结合性自右向左怎么理解?

C语言中结合性自右向左,简单说就是,从表达式右边开始执行;

1、只有同优先级的运算符才具有结合性“自左至右”或者“自右自左”一说。

2、exp(不同优先级运算符,依据优先级高低进行运算):

int a = 1, b =10, c = 30;

int a = a * b + c;

因为 * 比 + 的运算符优先级高,所以先计算a * b (先计算左边,未考虑结合性),在计算 10 + c,结果是 a = 300

3、c++标准对子表达式进行求值的次序没有做出规定,由各个c++编译器厂商自己决定(参见Bjarne Stroustrup所著的C++程序设计语言)。因此,开发人员不要编写依赖子表达式执行次序的代码,因为为了实现同样的功能,完全可以采用更为清晰的代码。

例如,语句int c=(a++)+(a++)+(a++);中给c赋值的表达式(a++)+(a++)+(a++)的求值。编写的目的是为了提高效率。

4、如果确实想钻研,那么根据Bjarne Stroustrup所说的“子表达式求值次序”,枚举各种可能,就可以理解所有不同结果的编译器行为。例如,上述语句int d=(++b)+(++b)+(++b);可以概念上表示为:int d=E1+E2+E3;(其中,E1,E2,E3是+运算符的同层次表达式,(E1+E2)和E3是+运算符的同层次表达式),其它同层次表达式可以同理)则其计算次序可以是:

1)E1(此时b=2)=>E2(此时b=3)=>E1+E2=b+b=6放入中间变量(此时b=3)=>E3

(此时b=4)=>d=10 对应VC的结果

2)E1(此时b=2)=>E2(此时b=3)=>E3(此时b=4)=>E1+E2=b+b放入中间变量(此时b=4)=>d=12 对应BC的结果;

c语言中条件运算 结合方向 从右到左 什么意思

在标准C语言的文档里,对操作符的结合性并没有作出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。 每个操作符拥有某一级别的优先级,同时也拥有左结合性或右结合性。优先级决定一个不含括号的表达式中操作数之间的“紧密”程度。例如,在表达式a*b+c中,乘法运算的优先级高于加法运算符的优先级,所以先执行乘法a*b,而不是加法b+c。 但是,许多操作符的优先级都是相同的。这时,操作符的结合性就开始发挥作用了。在表达式中如果有几个优先级相同的操作符,结合性就起仲裁的作用,由它决定哪个操作符先执行。像下面这个表达式: int a,b=1,c=2; a=b=c;

C语言中结合性自右向左怎么理解

1、简单说就是,从表达式右边开始执行; 只有同优先级的运算符才具有结合性“自左至右”或者“自右自左”一说。 2、exp(不同优先级运算符,依据优先级高低进行运算): int a = 1, b =10, c = 30; int a = a * b + c; 因为 * 比 + 的运算符优先级高,所以 先计算a * b (先计算左边,未考虑结合性),在计算 10 + c 结果是 a = 300 exp(同优先级运算符依据结合性进行运算): int a, b = 1, c = 8; a = b = c; 赋值运算符其结合性即为自右向左,即 a = ( b = c), 其结果是 b = 8, a = 8
展开全文阅读