关于c中的运算顺序什么叫“右结合性”

窦金亮 2019-11-06 14:51:00

推荐回答

其实很简单,它就是同优先级操作符在语句中的“运算优先级或叫顺序”。比如12/3*4,/和*是同优先级操作符,先算12/3呢还是先算3*4呢?由于/和*都是左→右结合的,所以12/3*4就被解释为12/3*4,而不会被解释为12/3*4。再比如当p是指针时的*p++,由于*和++同级别,它们又是右→左结合的,所以被解释为*p++而不会被解释为*p++。从以上可知,对于不同优先级的操作符,结合性就起不到什么作用了。个人理解,。
管照秀2019-11-06 14:58:14

提示您:回答为网友贡献,仅供参考。

其他回答

  • 1级,二赋指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、0...如果a>0,则执行if语句中的内容,否则退出。条件运算符:a=b>0?b:-b;当b>0时,a=b;当b不大于0时,a=-b;其实上面的意思就是把b的绝对值赋值给a。逗号运算符:b=2,c=7,d=5;a=++b,c--,d+3;有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3=8,所以a=8。
    龙川凤2019-11-06 15:55:07
  • 同等级的运算符,先后顺序按结合性来进行。下面的代码有利于理解结合性。int a,b=1,c=2;a=b=c;上面的代码是先执行b=c呢?还是先执行a=b。如果按前者,a=结果为2,如果按后者,a的结果为1。所有的赋值符都具有右结合性,就是在表达式中最右边的操作最先执行,然后从右到左依次执行。这样,c先赋值给b,然后b在赋值给a,最终a的值是2。所有优先级相同的操作符,它们的结合性也相同。这是必须如此的,否则结合性依然无法消除歧义,如果在计算表达式的值时需要考虑结合性,那么最好把这个表达式一分为二或者使用括号。例:  a=b+c+d=是右结合的,所以先计算b+c+d,然后再赋值给a+是左结合的,所以先计算b+c,然后再计算b+c+d在C语言中有少数运算符在C语言标准中是有规定表达式求值的顺序的:1:&&和||规定从左到右求值,并且在能确定整个表达式的值的时候就会停止,也就是常说的短路。2:条件表达式的求值顺序是这样规定的:test?exp1:exp2;条件测试部分test非零,表达式exp1被求值,否则表达式exp2被求值,并且保证exp1和exp2两者之中只有一个被求值。3:逗号运算符的求值顺序是从左到右顺序求值,并且整个表达式的值等于最后一个表达式的值,注意逗号'',''还可以作为函数参数的分隔符,变量定义的分隔符等,这时候表达式的求值顺序是没有规定的。
    黄石安2019-11-06 15:06:21
  • 右结合性:意思是从右向左执行运算;例如a=b=c,按a=+c运算,除了赋值运算符外,所有二元运算符都是左结合的。
    龙小飞2019-11-06 15:02:41

相关问答