作业帮 > 综合 > 作业

求助一个关于C语言指针的问题

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/27 21:24:17
求助一个关于C语言指针的问题
int main()
{
\x09int a[]={1,2,3,4,5};
\x09int *p=a;
\x09printf("%d,%d,%d,%d,%d,%d,%d\n",*p,*(++p),(*p)++,*p,*p--,--(*p),*p);
\x09return 0;
}
这段程序运行结果是2,2,0,0,0,0,1
我不明白的是printf里面的参数结合是从右向左的,那么在结合到*p--后,p不是已经越界了吗?后面的结果是怎么得到的?
求助一个关于C语言指针的问题
其实C标准对于函数参数的求值顺序是没有规定的.像在我的机子上win7 vc6出来的结果都是0,自己在编程过程中应该避免这个问题,对于同一个变量相关表达式不要重复求值.如果是考试的话,这个,你看看答案怎么说吧.
再问: 我也知道顺序没有规定 但是我记得VC6.0下应该是从右向左的吧 参考答案是我上面写的那个 但是没有解答 我自己机器上运行出来也是这个 但是不论从左向右还是从右向左都得不到这个答案 所以我才格外好奇这个结果是怎么出来的
再答: 更正,我说的那串0,我也不清楚怎么个情况。控制台编译出来的。vc6图形界面编译出来的是你说的那个答案。vs2008下,数组a就是被破坏了。。。求值规则也许并不是简单从左往右或者从右往左