括号中的是不是总是先运算,如何解释*(p++)和*(++p)

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:57:10
括号中的是不是总是先运算,如何解释*(p++)和*(++p)

#include <iostream.h>

void main()

{
int a[3];
a[0]=10;
a[1]=11;
a[2]=12;
int *p = &a[1];
cout<<*(p++)<<endl;//11

p=&a[1];
cout<<*(++p)<<endl;//12

p=&a[1];
cout<<*p++<<endl;//11

p=&a[1];
cout<<*++p<<endl;//12

/*
参看《C语言程序设计》
运算符优先级及结合性
......
又如:
*p++
该表达式中运算符"*"和"++"的优先级相同,而它们的结合性是从右至左,因此,该表达式等价于:
*(p++)
......

++前缀

后缀++
优先级是不同的。
*/

}

p++
p=p+1

++p相同,只是调用的优先级不同
p++先调用在加1
后者先加再调用