void main()
{
int arr[]={6,7,8,9,10};
int *ptr=arr;
*(ptr++)=*(ptr++)+100;
printf("%d,%d",*ptr,*(++ptr));
cout <
cout <
}
为什么输出
9,9
106789
*ptr和*(++ptr)怎么可能都是9呢?
还有106为什么没有付给arr[1]呢?
======================
*(ptr++)=*(ptr++)+100; 相当于*ptr = ptr+100; prt++;prt++;
表示arr[0] = a[0] + 100;
执行两次ptr++后*ptr == a[2]
而VC输出是从右至左的顺序 所以先输出*(++prt)即arrr[3]然后再输出*ptr也是arr[3]了
例如上面换成
cout < <*(++ptr) < <*ptr < 则输出98
阅读(2016) | 评论(1) | 转发(0) |