*p++ *++p (*p)++ ++(*p)
1、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n",*p++);
printf("%d\n",*p);
return 0;
}
555
444
*p++相当于 *(p++)(虽然* ++处于同一优先级,但从右至左),p++是先运算再++,
这里的运算是(*p)与*结合,再p+1,等同于 *p, p++。所以第一次打印a[0] 555
第二次打印a[1] 444.
2、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n",*++p);
printf("%d\n",*p);
return 0;
}
444
444
*++p相当于++p是先++再运算,*++p等同于 p += 1; *p;所以第一次打印a[1],
第二次还是a[1]。
3、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n", (*p)++);
printf("%d\n",*p);
return 0;
}
555
556
(*p)++,使用()强制将*与p结合,只能先计算*p,然后对*p整体的值++。
4、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n", ++(*p));
printf("%d\n",*p);
return 0;
}
556
556
++(*p),先*p取值,再前置++,该值+1后作为整个表达式的值
1、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n",*p++);
printf("%d\n",*p);
return 0;
}
555
444
*p++相当于 *(p++)(虽然* ++处于同一优先级,但从右至左),p++是先运算再++,
这里的运算是(*p)与*结合,再p+1,等同于 *p, p++。所以第一次打印a[0] 555
第二次打印a[1] 444.
2、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n",*++p);
printf("%d\n",*p);
return 0;
}
444
444
*++p相当于++p是先++再运算,*++p等同于 p += 1; *p;所以第一次打印a[1],
第二次还是a[1]。
3、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n", (*p)++);
printf("%d\n",*p);
return 0;
}
555
556
(*p)++,使用()强制将*与p结合,只能先计算*p,然后对*p整体的值++。
4、
#include <stdio.h>
int main(void)
{
int a[5] = {555, 444, 333, 222, 111};
int *p;
p = a;
printf("%d\n", ++(*p));
printf("%d\n",*p);
return 0;
}
556
556
++(*p),先*p取值,再前置++,该值+1后作为整个表达式的值