请教大侠: 如下代码: int a[2]={1,2}; int *p,y; p=a; y=*(p++); 看老谭的书上说,先*p,然后p++。即y=a[0],而不是a[1]。我觉得疑惑,调试结果的确y=a[0]=1。根据C的C运算符优先级别规定,()运算符高于*,y=*(p++)应该是先计算(p++),即p加1,然后取(p+1)指向的值,即Y=*(p+1)=a[1]=2。而根据老谭的解释却是先*与p结合,y=*p,再p与++结合。那么()运算符根本就没有起作用,或者说在这里*运算符级别高于()运算符。这个矛盾究竟是我理解有问题,还是C的问题呢? 那位大侠帮帮忙,解惑一二? |