- 论坛徽章:
- 0
|
int arr[]={0,1,2,3,4,5,6,7,8,9,10,11,12};
int *ptr=arr;
int ia,ib,ic;
(ia=5,ib=4,ic=3,ic)=(ia=16,ib=17,ic=18,ic);
//先操作表达式的左边在是右边
//而不是按数学思维的将等式右边赋给等式左边!
*(ptr++)=*(ptr++)+16; //我认为a[0]=a[1]+16=17;实际a[0]=a[0]+16=16;
*(++ptr)=*(++ptr)+16; //我认为a[3]=a[4]+16=20;实际相同
*(++ptr)=*(ptr++)+16; //我认为a[5]=a[5]+16=21;实际相同
*(ptr++)=*(++ptr)+16; //我认为a[6]=a[8]+16=24;实际a[6]=a[7]+16=23;
*(ptr++)=*(ptr++)+16; //我认为a[8]=a[9]+16=25;实际a[8]=a[8]+16=24;
printf("%d,%d,%d",*ptr++,*(++ptr),*(++ptr));
// 输出:12,12,11
真的假的。我是没写过,但是结果很奇特 |
|