关于指针..在线..等...
main(){
int a=2,*p=&a,*q=&a;
printf("%d %d ",*p++,*(q++));
p=&a,q=&a;
printf("%d %d",*p,(*q)++);
} 为什么结果是2 2 3 2?
2007-07-28 21:56
2007-07-28 22:33
* 和 ++ 的优先级相同,而且都是右结合,所以输出 *p++ 和输出 *(q++) 是一样的(p、q 都指向了a).
至于下面那句,记住,实参传递参数给形参的时候是按从右至左的顺序传递的,这里也是一样
即先执行 (*q)++ 再执行 *p 。而(*q)++ 执行完之后a 的值已经变成3了
2007-07-28 22:41
应该全是2才对。。
++优先级比 * 高 所以*(q++)与*q++无区别
++在后面 所以 是先输出值2然后地址++了
所以只有你最后一个 (*q)++); 才把值2++变成了3
你在最后再加上一句printf("%d",*p); 这句输出是3了

2007-07-28 22:48
2007-07-28 22:50

2007-07-28 22:50
变量才能++,常量不能++
2007-07-28 22:52
2007-07-28 22:53
2007-07-28 22:54
2007-07-28 22:55