B 的表达式是 (p=x+2, *p++),按"后缀++" 规定,在表达式内 先用原值,出了表达式再自增1。所以 B 的表达式 可以写成: (p=x+2, *p)。
p=x+2 就是 p=&x[2],
*p 就等于 x[2], 等于 2.
C 的表达式是 (p=x+1, *(p++) ), 按后缀++规定,在表达式内 先用原值,出了表达式再自增1。所以 C 的表达式 可以写成: (p=x+1, *(p) ),
p=x+1 就是 p=&x[1],
*(p) 就等于 x[1], 等于 1. 数值不为2的表达式 选 C
p++的返回值是p原来的值,而不是增加后的值
B *p++ 返回*(x+2) x[2]=2
C *(p++) 虽然有括号先执行p++,p本身自增了,但返回值是x+1 ,*(x+1)=1