您好、欢迎来到现金彩票网!
当前位置:ag视讯 > 高优先级 >

C语言中优先级和结合性 例如:p

发布时间:2019-07-07 15:11 来源:未知 编辑:admin

  先请大虾讲解下优先级和结合性。在Cprimerplus最后一页写有后缀++--优先级大于前缀++--,后缀的结合性从左到右,前缀的结合性从右到左。我的理解,*p++的意思就是*(p++),即指针p先加...

  先请大虾讲解下 优先级和结合性。 在C primer plus 最后一页写有 后缀 ++ -- 优先级大于前缀++ -- ,后缀的结合性 从左到右,前缀的结合性从右到左。我的理解 ,*p++ 的意思就是 *(p++),即指针p 先加1再取值,而C primer plus 书中在讲解的意思是 ,*p++ 是先取P指向的数值再将P++ ,请大虾指点 我哪里理解有误,谢谢

  后缀 ++ -- 优先级最高 ,结合性左到右 ,那么 *p++ 为什么不先算P++ ,先算谁 是取决于优先级还是结合性展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  *p++,由于++和*的优先级相同,结合方向为自右至左。所以确实*p++等价于*(p++),而p++其实取值的时候还是取p的,是用过之后才能+1。所以*(p++)就是先执行p++得到p,然后执行*p,得到p指向的值,等这个运算结束了才能+1。你的那个理解应该是对于*(++p)的!“*p++,由于++和*的优先级相同,结合方向为自右至左” 这句话有问题,这里的++ 是后缀,在C primer plus 最后一页 写有 后缀++ 优先级大于 前缀++ ,结合性是 从左至右。前缀++才和*优先级相同,结合方向为自右至左我说的这个结论是在谭浩强《C语言程序设计》第234页上的原话,你可以去查查,这是C语言学习的权威!

  P++意味着使用P之后再++,因为++在P之后,如果使++P,那么先让P加1(使1个长度单位或者步长,因为使数组元素对长度),再使用P。

  所以*P++先取得*P对值参加运算再P++,而*(++P)先P++再取得*P。追问后缀 ++ -- 优先级最高 ,结合性左到右 ,那么 *p++ 为什么不先算P++ ,先算谁 是取决于优先级还是结合性追答抱歉我上面说错了一点:括号不仅仅代表结合性还代表运算顺序,确实先算P++。

  这就意味着先计算括号里面的值,括号里是个表达式P++。换句话讲,先得出括号里表达式的值。假如P为5,那么P++这个表达式对值就是5,执行了这个表达式,P自己增加1为6。(说明,指针变量只有指向数组元素时才可以自加,这时候指针变量存地址,所以这里举例只是把P当作一般变量来说明P++这个表达式的运算情况。)

  作为对比,*(++P)这个同样先取得表达式++P的值(同样假如p为5,那么这个表达式的值是6),自然*(P++)这个表达式得出的是数组下一个元素的值。

  展开全部一。其实C指针中【*】的优先级等于++(或--),对于这个问题,++或--是后缀,因此先进行【*】运算,即先运算*p的值,在给*p的值+1 。相当于P=&a,*p=a,*p++=a++ !

  二。先算当然取决于优先性,当优先级相同时,按自然顺序运算,即【从左至右】,对于本问题,如果先P++,那么P所指的地址就相应改变,而不指向原值地址

http://bed-plans.net/gaoyouxianji/538.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有