書上關于*(p++)表達式的幾種變形形式的思考題
代碼:
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int *p = &a[3];
cout << "*p++ = " << *p++ << endl;
//因為++的優先級與*相等,但由于*和++運算符都是右結合性(從右向左),所以該表達式相當于*(p++),先返回p給*讀取a[3]的值,p再自增,指向a[4]
cout << "*(++p) = " << *(++p) << endl;
//p先自增,指向a[5],再返回給*,輸出a[5]的值6
cout << "*++p = " << *++p << endl;
//該表達式與上一行表達式一樣,但是由于上面p已經指向a[5],所以這行p指向a[6],輸出7
cout << "(*p)++ = " << (*p)++ << endl;
//先讀取a[6]的值返回給<<輸出7,a[6]的值再自增,變成8
cout << "++(*p)= " << ++(*p) << endl;
//先讀取a[7]的值8返回給++,a[7]變成9,再輸出9 //更正,應該是先讀取a[6]的值8返回給++,a[6]變成9,再輸出9
system("pause");
}
----------------------------------------------------------------------------------------------------
輸出結果:


浙公網安備 33010602011771號