指针运算优先级的问题
#include <stdio.h>int data[2]={100.200};
int moredata[2]={300,400};
int main(void)
{
int * p1,* p2,* p3;
p1 = p2 = data;
p3 = moredata;
printf("*p1 = %d, *p2 = %d, *p3 = %d\n", *p1, *p2, *p3);
printf("*p1++ = %d, *++p2 = %d, (*p3)++ = %d\n", *p1++, *++p2, (*p3)++);
printf("*p1 = %d, *p2 = %d, *p3 = %d\n", *p1, *p2, *p3);
return 0;
}
第一行输出:p1=p2=data表示将数组data首元素的地址给指针p1和p2,p3=moredata同理。所以p1和p2所指向的值相同。p1p2和p3他们所指向的值分别是100和300。
第二行输出:*p1++表示先运算出指针p1所指向的值,然后指针p1自增加1,所以*p1++ =100。*++p2表示指针p2先自增加1,然后再算p2所指向的值,所以*++p2= 200。
(*p3)++ 在书上的最终结果是300,我自己输入代码显示结果也是300。(*p3)++不是表示先运算出p3所指向的值,然后指向的值自增加1。所以(*p3)++ = 301吗?
我现在不理解第二行输出的(*p3)++ = 300和第三行输出的*p3 = 301。
请大家帮我解释一下