指標的運算元順序是由右到左(書上寫的),實際來測試一下
#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);
//括號測試
printf("It is equal result...\n");
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);
return 0;
}
*p1 = 100, *p2 = 100, *p3= 300 *p1 = 100, *p2 = 200, *p3= 300 *p1 = 200, *p2 = 200, *p3= 301 It is equal result... *p1 = 100, *p2 = 200, *p3= 301 *p1 = 200, *p2 = 200, *p3= 302
由此得知,*p1++ 相等於 *(p1++)
而不是(*p)++,我之前記錯了><







0 意見:
張貼留言