int i, j, k = 5, *p;
p = &k;
i = ++(*p);
j = (*p)++;
printf("%d %d %d", i, j, k) ;
下面程序段的运行结果是
6 6 7
解释一下吧
p是k的地址
i=++( * p),相当于i=++k,所以,i和k都变为6,因为++在前时,先加1,再运算
j=( * p)++相当于j=k++,因为++在后,所以先赋值,然后k再加1,因此j=k=6,然后k=7
因此最后i,j,k分别为6,6,7
p = &k; 将指针 p 指向变量 k 的地址。
i = ++(*p); 这里首先对 (*p) 进行前缀自增操作,也就是将 k 的值加 1,此时 k 变成了 6,然后将这个新值 6 赋给 i。
j = (*p)++; 这里先将 (*p) 的值 6 赋给 j,然后对 (*p) 进行后缀自增操作,也就是将 k 的值再加 1,此时 k 变成了 7。
printf("%d %d %d", i, j, k); 输出结果为 "6 6 7"。
因此,最终的输出结果是 i=6,j=6,k=7。
不知道你这个问题是否已经解决, 如果还没有解决的话: