关于*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。

浙公网安备 33010602011771号