早教吧作业答案频道 -->其他-->
求助一个关于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语言指针的问题...的网友还看了以下:
已知随机变量η的分布列是η=0,p=1/5;η=1,p=p;η=x,p=3/10;Eη=11/10, 2020-03-30 …
求助一个关于C语言指针的问题int main(){x09int a[]={1,2,3,4,5};x 2020-05-13 …
如图,半径为5的⊙P与y轴交于点M(0,-4),N(0,-10),函数y=kx(x<0)的图象过点 2020-05-23 …
王、张两位叔叔有钱数比是7:5如果王叔叔给张叔叔650元,他们钱数之比...王、张两位叔叔有钱数比 2020-06-06 …
在矩形ABCD中,两邻边AB=5,AD=12,P是AD边上任意一点,PE垂直于BD于E,PF垂直于 2020-07-08 …
若有以下定义和赋值double*q,a=5.5;int*p,i=1;double*q,a=5.5; 2020-07-09 …
线段MN的两个端点M,N分别在x轴,y轴上滑动,MN=5,点P是线段MN上一点,且MP=2/3PN 2020-07-29 …
如图,半径为5的⊙P与y轴交于点M(0,-4),N(0,-10),函数y=kx(x<0)的图象过点 2020-07-29 …
经过下列语句intj,a[10],*p;定义后,下列语句合法的是()A.p=p+2B.p=经过下列语 2020-11-06 …
直线AB与双曲线Y=X/K相交于P,Q其中点A(-5,0),点P(1,M)∠BAO=45°如图:直线 2021-02-04 …