#include<stdio.h>
int main()
{
int a[2]={10,4};
int *k;
int *j;
j=a;
k=j;
printf("j=%d,k=%d\n\n",*j,*k);
*j++;
++*k;
printf("j=%d,k=%d",*j,*k);
return 0;
}
J = 10,K = 10 J = 4,K = 11
我認爲它應該有相同的結果,但事實並非如此。 我想問一下造成這種差異的原因。我沒有得到它背後的原因。
一元和後綴運算符的關聯性是不言而喻的,而且幾乎無關緊要。 '*** p'不可能像'(((*)*)*)p'那樣從左到右關聯,因爲這沒有意義。同樣,'a [i] [j](z)'不能是'a([i]([j]((z))))''。如果你爲這些編寫了一個Yacc解析器,你不需要'%assoc'聲明:這種模糊性根本就不存在。在C中,我們只需要記住一元運算符的優先級低於後綴,所以'op op op expr op op op'表示'op op op(expr op op op)'。 – Kaz