C 指针问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:10:08
如果
int a=2,*b=&a,*c=&a;
printf("%d %d",*p++,*(p++));
为什么输出的结果都是2.
*p和++都是右结合,应该是先把p++,然后输出*p啊.那p就不是指向a拉,为什么还会输出a的值?
还有*(p++),应该先算括号里的,再取指想地址......为什么都是2啊.
那输出不是应该输出3?难道++可以剩掉不运算?..... 打错了 看教材里是P和Q 我自己打B和C..一时迷糊了

p++,先取p的值,之后将p值增1

**************************************

++和*的优先级相同,右结合性,所以,*b++与*(b++)的效果相同,
关于为什么会有这样的输出,请参考以下资料,也许会对你有所帮助:

http://wangxvdong.cn/files/printf.txt

自加,算术,关系,逻辑,条件,赋值,逗号。
这个顺序。
int a=2,*b=&a,*c=&a;
printf("%d %d",*p++,*(p++));
貌似p没有声明吧。