Div*_*vij 2 c programming-languages
int main(){
int a[3]={1,10,20};
int *p=a;
printf("%d %d " ,*++p,*p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在gcc编译器上,上面代码的输出是10 1.
我知道*++ p递增p并取消引用新值.但是由于p已递增,为什么*p返回1而不是10?
在计算什么顺序函数参数表达式时,这是未指定的行为.有些编译器可能使用从左到右,有些从右到左,有些可能会根据优化情况执行不同的评估顺序.所以在你的情况下*p得到评估之前*++p导致你的"怪异输出".