c语言指针的一个题目

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:42:22
#include<stdio.h>
main()
{int a[]={1,2,3,4,5,6};
int *p;
p=a;
printf("%d %d %d %d\n",*p,*(++p),*(++p),*(p--));
getch();
}

结果为何是
2 2 1 1
我觉得应该是
1 2 3 2


请详细解释下 我刚学指针

按你所说的输出结果,那么变量列表中的运算是从右到左的。然而实际上这种表达可能会出现歧义,也就是说在不同的编译系统中可能得到完全不同的结果,因此实际编程中应避免出现这样的语句

printf("%d %d %d %d\n",*p,*(++p),*(++p),*(p--));
从右向左算~

找抽的题目。

和编译器有关。。。