爲什麼以下是區別?x = * p ++和* p ++; x = * p in c有什麼區別?
program001.c:
int main (void)
{
int a=3,*p,x;
p=&a;
*p++;
x=*p
printf("a=%d, *p=%d, x=%d\n",a, *p, x);
return 0;
}
result: a=3,*p=21974,x=21974
Program002.c:
int main (void)
{
int a=3,*p,x;
p=&a;
x=*p++;
printf("a=%d,*p=%d,x=%d\n",a,*p,x);
return 0;
}
result:a=3,*p=3,x=3
爲program001的結果,它可以理解:* P ++是指向不確定的狀態,所以這是不合理的結果。
for program002的結果,它爲什麼不等於program001?
請查閱運算符的優先級和關聯性 –
想想增量何時發生與賦值到'x'有關。還要考慮'* p ++'和'* ++ p'之間的區別。 –
同時考慮* p在增加後指向的位置,並瞭解[*未定義的行爲*](https://en.wikipedia.org/wiki/Undefined_behavior)。 –