早教吧作业答案频道 -->其他-->
求助一个关于C语言指针的问题int main(){x09int a[]={1,2,3,4,5};x09int *p=a;x09printf("%d,%d,%d,%d,%d,%d,%d ",*p,*(++p),(*p)++,*p,*p--,--(*p),*p);x09return 0;}这段程序运行结果是2,2,0,0,0,0,1我不明白的是printf里面的参
题目详情
求助一个关于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不是已经越界了吗?后面的结果是怎么得到的?
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标准对于函数参数的求值顺序是没有规定的.像在我的机子上win7 vc6出来的结果都是0,自己在编程过程中应该避免这个问题,对于同一个变量相关表达式不要重复求值.如果是考试的话,这个,你看看答案怎么说吧.
看了 求助一个关于C语言指针的问题...的网友还看了以下:
1)已知f(x)是二次函数且f(0)=2,f(x+1)-f(x)=x-1,求f(x).(2)已知f 2020-05-13 …
如图所示,半圆形框架竖直放置在粗糙的水平地面上,光滑的小球P在水平外力F的作用下处于静止状态,P与 2020-05-17 …
有一个力F,它在不断增大.某人以此为条件,应用P=Fv进行了如下推导:根据P=Fv,F增大则P增大 2020-06-07 …
设f为可导函数,对于任意实数p,t有f(p+t)=f(p)+f(t)+2*p*t,且f'(0)=1 2020-06-08 …
条件概率问题P(E|F)=P(EF)/P(F)这个是如何从最原始的公式推导出来的?另外P(EF)我 2020-07-09 …
自考.工程经济学.(F/P,8%,5)=1.469(P/F,8%,5)=0.6806(F/A,8% 2020-07-18 …
还有一道题:(P/F,5%,1)=0.9524;(P/F,5%,5)=0.7835(F/P,5%, 2020-07-18 …
有一个力F,它在不断增大.某人以此为条件,应用P=Fv进行如下推导.根据P=Fv,F增大则P增大; 2020-07-20 …
若函数y=f(x)处处二阶可导,且点(p,f(p))是曲线y=f(x)的拐点,则limk→0[li 2020-07-31 …
已知文法G:(1)E→E+T|T(2)T→T*F|F(3)F→P↑F|P(4)P→(E)|i1.已知 2020-12-07 …