int a[3]={10,20,30};
int* p = a;
cout << *p++ << endl;
根据wikipedia,后缀++
的优先级高于取消引用,*p++
应首先运行p++
,然后取消引用,结果应为20,但为什么是实际的结果是10?
答案 0 :(得分:3)
p++
使用后缀增量运算符。即,它增加p
,但返回增加之前存在的值。换句话说,这相当于做这样的事情:
int a[3]={10,20,30};
int* p = a;
int* q = p;
++p;
cout << *q << endl;
当这样的风格时,很明显为什么要打印10
。
如果要增加p
并打印其取消引用,可以使用前缀增量运算符:
int a[3]={10,20,30};
int* p = a;
cout << *(++p) << endl;