指针中的运算符的结合性 您所在的位置:网站首页 三目运算符是从右到左运算吗 指针中的运算符的结合性

指针中的运算符的结合性

2024-06-30 08:07| 来源: 网络整理| 查看: 265

先回忆一下运算符的优先级吧

这里写图片描述 这里写图片描述

C 语言与其他高级语言相比, 一个显著的特点就是其运算符特别丰富, 共有34 种运算符。C 语言将这34 种运算符规定了不同的优先级别和结合性。优先级是用来标识运算符在表达式中的运算顺序的, 在求解表达式的值的时候, 总是先按运算符的优先次序由高到低进行操作, 可是, 当一个运算对象两侧的运算符优先级别相同时, 则按运算符的结合性来确定表达式的运算顺序。

运算符的结合性指同一优先级的运算符在表达式中操作的组织方向, 即: 当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序, C 语言规定了各种运算符的结合方向( 结合性) 。 大多数运算符结合方向是“自左至右”, 即: 先左后右, 例如a- b+c, b 两侧有- 和+两种运算符的优先级相同, 按先左后右结合方向, b 先与减号结合, 执行a- b 的运算, 再执行加c 的运算。

除了自左至右的结合性外, C 语言有三类运算符参与运算的结合方向是从右至左。即: 单目运算符, 条件运算符, 以及赋值运算符。

关于结合性的概念在其他高级语言中是没有的, 这是C语言的特点之一,特别是从右至左结合性容易出错, 下面通过几个具体的运算符来剖析C 语言运算符的结合性。 若a 是一个变量, 则++a 或a++和- - a 或a- - 分别称为前置加或后置加运算和前置减或后置减运算, 且++a 或a++等价于a=a+1, - - a 或a- - 等价于a=a- 1, 即都是使该变量的值增加1 或减少1。由此可知, 对一个变量实行前置或后置运算, 其运算结构是相同的, 但当它们与其他运算结合在一个表达式中时, 其运算值就不同了。

讲到这里,大家应该都明白了吧。说白了,许多操作符的优先级都是相同的。这时,操作符的结合性就开始发挥作用了。在表达式中如果有几个优先级相同的操作符,结合性就起仲裁的作用,由它决定哪个操作符先执行。先执行,可以看做是加上括号。比如,右结合(从右到左),那就是,把右边的运算用括号先括起来,再与左边的进行计算,这样自然是先执行右边的了。 比如 int a,b=1,c=2; a=b=c; 这里’=’的结合性是从右到左。 故a=b=c; 可变为a=(b=c); 即a=2。 注意;在一个运算量两侧的运算符,优先级是相同时则按照运算符的结合性所规定的结合方向处理。 例如 赋值运算符+=和-=也处于同一优先级,结合方向是自右向左,那么 7+=3-=2;运算顺序就是先算3-=2,结果为1,然后再算7+=1,结果为8;

再说一下结合性吧;不知道注意没;第二级,13, 14别的都是自右向左的结合性;

再就可以联系到指针了。 先讨论++与*的优先次序吧; 这里写图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有