C++ C+中的错误概念+;程序
我有以下计划:C++ C+中的错误概念+;程序,c++,arrays,C++,Arrays,我有以下计划: #include<stdio.h> int main() { int a[5]={5,1,15,20,25}; int i,j,m; i=(++a[1]); j=a[1]++; m=a[i++]; printf(" The value of i is %d\n",i); printf(" The value of j is %d\n",j); printf(" The value of m is
#include<stdio.h>
int main()
{
int a[5]={5,1,15,20,25};
int i,j,m;
i=(++a[1]);
j=a[1]++;
m=a[i++];
printf(" The value of i is %d\n",i);
printf(" The value of j is %d\n",j);
printf(" The value of m is %d\n",m);
return 0;
}
#包括
int main()
{
int a[5]={5,1,15,20,25};
int i,j,m;
i=(++a[1]);
j=a[1]++;
m=a[i++];
printf(“i的值为%d\n”,i);
printf(“j的值是%d\n”,j);
printf(“m的值是%d\n”,m);
返回0;
}
根据我的概念,i、j和k的值应分别为2、2和15。但是编译器分别显示i、j和as 3、2、15的值?为什么?你能解释一下这个输出背后的逻辑吗?让我们看看在整个程序中
i
发生了什么:
int a[5]={5,1,15,20,25};
i=(++a[1]); // i is now 2 (a[1]+1)
m=a[i++]; // after this, i=3
这里似乎没有什么问题:
#include<stdio.h>
int main()
{
int a[5]={5,1,15,20,25};
int i,j,m;
i=(++a[1]); //i=2; a[1] = 2; i.e first increment a[1] then equate i to a[1]
j=a[1]++; //j = 2; a[1] = 3; i.e first equate j to a[1] then increment a[1]
m=a[i++]; //m = a[2]=15; i=3; i.e. first equate m to a[i] then increment i
printf(" The value of i is %d\n",i);
printf(" The value of j is %d\n",j);
printf(" The value of m is %d\n",m);
return 0;
}
#包括
int main()
{
int a[5]={5,1,15,20,25};
int i,j,m;
i=(++a[1]);//i=2;a[1]=2;即首先增加a[1],然后将i等同于a[1]
j=a[1]+;//j=2;a[1]=3;即首先将j等同于a[1],然后增加a[1]
m=a[i++];//m=a[2]=15;i=3;即首先将m等于a[i],然后增加i
printf(“i的值为%d\n”,i);
printf(“j的值是%d\n”,j);
printf(“m的值是%d\n”,m);
返回0;
}
在语句i=(++a[1])中代码>,首先a[1]的值增加1。然后它被分配给i,现在i是2。
请参见u执行赋值m=a[i++]
。这里有优先级。首先,i为2的a[i]被赋值给m,然后在该语句中i的值增加。现在i为3。因此,首先是赋值,然后是增量。如果语句为m=a[++i],则情况并非如此
。在该语句中,i首先增加,然后赋值编译器将i、j和m的值分别显示为3、2和15?为什么?根据你的问题,你已经同意你的编译器关于j
和k
。我的回答解释了i
@OcenaPothik你要么忘了1。(++a[1])
2中的++
。m=a[i++]中的++
根据我的概念,i、j和k的值应该分别为2、2和15。但是编译器分别显示i、j和as 3、2、15的值?为什么?你能解释一下这个输出背后的逻辑吗?@Ocena Pothik,使用运算++a[1],首先增加a[1],然后将i等同于a[1],这就产生了2。在第三步中,i++使i 3你知道如何使用调试器吗?这是。你的链接对我来说是一个很好的资源。谢谢你。如果你很难看到这一点:不要同时做几件事。如果您将其编写为++a[i];i=a;a[1]++;j=a[1];m=a[i];i++代码>。把语句混在一起没有好处。