关于*p++的执行顺序

不确定*p++哪个优先级高了,想偷懒到百度找找解释,发现高赞的评论下也骂声一片,还是回头自己试试。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void test_prior()
 5 {
 6    int a=10,*pa=&a;
 7    int b=10,*pb=&b;
 8    int c=*pa++;//++ * ?
 9    int d=(*pb)++;//* ++ 11
10    cout << *pa << endl << *pb << endl;
11 }
12 
13 int main(){
14    test_prior();
15 
16    return 0;
17 }

就这么一段简单的代码,输出为10和11

结论:先++在*,顺序从右往左。因为优先级相同,表达式从右向左执行,如果++*p就没有争议了

问题:至于为什么pa地址++后还能输出10,这个我还不是很清楚

陷阱:可能对很多人来说不算陷阱。我在测试的时候误以为int d=(*pb)++后d应该是11。实际上这种后++的都是这个表达式结束之后才+1。

posted @ 2021-12-14 15:33  cat_dog_pig  Views(783)  Comments(0)    收藏  举报