早教吧作业答案频道 -->其他-->
求助一个关于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语言指针的问题...的网友还看了以下:
关于对数组元素a[i][j]的引用:*(*(a+i)+j)为什么也正确呢,*(a+i)等价于a[i 2020-06-12 …
设a=i,b=│√3-i│,z1=a+b,z2=a+b(i+1),其中i为虚数单位如题设a=i,b 2020-06-14 …
C语言中二维数组a[i][j]中,a+i=*(a+i)=a[i]=&a[i]是怎么理解的.其中*( 2020-06-27 …
矩阵问题已知A矩阵,AX+I=A^2+X(其中I为单位矩阵),求X(求思路,谢谢)因为AX+I=A 2020-07-14 …
正方体的6个面分别写着A、c、D、E、F、I.与A、E、I相对的面分别是哪个面?第一个正方形上面是 2020-07-29 …
若(1+2ai)*i=1-b*i,其中a、b∈R,i是虚数单位,则|a+b*i|=?已知0<a<2 2020-07-30 …
一个关于虚数的问题∵定义得知ii=-1∴i=±√(-1)∵±±a=++a,+-a,-+a,--a= 2020-07-30 …
这个矩阵问题希望老师能帮助我!已知A矩阵,AX+I=A^2+X(其中I为单位矩阵),求X(求思路,因 2020-11-03 …
I与横截面积的大小关系?有两点矛盾不知道为什么1,I=q/t中.q是整个横截面的电荷量,不是单位面积 2021-01-11 …
有一根粗细不均匀的导线,己知粗细端横截面积之比为2:1,当有电流通过这一导线时,通过粗端的电流I粗与 2021-01-12 …