*p++与++*p

(个人总结,如有不对的地方,望指正)

引入

1、单目运算符包括:++--,(类型),sizeof&*^,!,+(正号),-(负号)。结合规律是:从右到左

当然,方向性是对于相同优先级的运算中了。

2、函数参数中表达式的运算顺序是从右向左。在普通的只有双目运算的表达式中的运算是从左向右的。

printf也是一个函数。特别的是,a=16;printf(“%d,%d,%d\n”,a++,a++,++a);在vc6.0环境下,a++是在整个语句运行后才加一;在Borlandc++ 5.0、Turbo C 2.0环境下,a++是在这个表达式运行完就加一。需要注意的是函数参数间的逗号不要把他们看成逗号表达式了,如果是逗号表达式还要在函数中加括号。

 

所以:

1、*p++等同于*(p++),先运行p++,但p++却谦逊的礼让了(它是有优先权,但声明它要后加)。然后运行*p(因为指针还没向下移动。最终的结束时*p,p++;

         官方一点的解释是:取出p所在单元的值作为表达式的值,在将指针p移动到下一个存储单元。

2、++*p等同于++(*p),取出p所在单元的值,然后该值加一作为表达式的值。

 

演示:

#include "stdio.h"
void main()
{
         inta[2]={2,12},b[2]={2,12};
         int*p=a,*q=b;
   printf(",*p++=%d,++*p=%d,*p++=%d\n",(*p)++,++*p,*p++);
         *q++,++*q,(*q)++;
         printf("%d\n",b[1]);
}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值