任何人都可以解释我的输出.
#include<stdio.h>
int main() {
int a[]={10,20,30};
int *p=a;
++*p++;
printf("%d %d %d %d",*p,a[0],a[1],a[2]);
}
Run Code Online (Sandbox Code Playgroud)
输出是20 11 20 30
后缀增量具有更高的优先级,因此第二个索引的值应该增加.为什么第一个索引的值会增加?
R S*_*ahu 14
由于运营商的优先权,
++*p++和...一样++(*(p++)).
这相当于:
int* p1 = p++; // p1 points to a[0], p points to a[1]
++(*p1); // Increments a[0]. It is now 11.
Run Code Online (Sandbox Code Playgroud)
这解释了输出.