递增/递减运算符与指针的优先级问题

前缀递增、前缀递减和解除引用运算符的优先级相同,以从右到左的方式进行结合。
后缀递增和后缀递减的优先级相同,但比前缀运算符的优先级稿,这两个运算符以从左到右的方式进行结合。
double arr[5]={21.1, 32.8, 23.4 , 45.2,37.4 ;}
double *pt =arr;// 指针指向数组的第一个元素 arr[0]=21.1
++pt; //指针指向第二个数组元素 arr[1]=32.8
double x=*++pt; //前缀从右面结合,先把pt指向位置加一,值到arr[2]=23.4,然后再解除引用 x=23.4
++*pt; //前缀从右向左结合,先解除引用,为23.4,然后再加一 则arr[2]=24.4
(*pt)++;//后缀优先级比解除引用优先级高,但是有括号,优先级最高。先算括号里的,解除引用 arr[2]=24.4,然后再加一
//则有arr[2]=25.4 pt依然指向arr[2]
x=*pt++;//后缀优先级高,先后缀,但是又是整个运算后指针位置加一,所以x=25.4,然后pt指向arr[3]

猜你喜欢

转载自blog.csdn.net/qq_22070551/article/details/81203717