Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 答案是正确的,但不知道如何或为什么。需要解释吗_C_Arrays - Fatal编程技术网

C 答案是正确的,但不知道如何或为什么。需要解释吗

C 答案是正确的,但不知道如何或为什么。需要解释吗,c,arrays,C,Arrays,我最近参加了一次考试,有一道附加题,我是唯一答对的人。我和我的同学们一样好奇我是如何做到这一点的 问题是: 使用这个数组:inta[5]={5,1,15,20,25} 使用以下变量:int i,j,m 使用此基本代码: i = /*Enter Code*/; j = /*Enter Code*/; m = /*Enter Code*/; printf("%d, %d, %d", i, j, m); 得到这个答案:3,2,15 有很多条件,但主要是我们只允许使用数组和一个'1'和一个'+'每个变

我最近参加了一次考试,有一道附加题,我是唯一答对的人。我和我的同学们一样好奇我是如何做到这一点的

问题是: 使用这个数组:inta[5]={5,1,15,20,25}

使用以下变量:int i,j,m

使用此基本代码:

i = /*Enter Code*/;
j = /*Enter Code*/;
m = /*Enter Code*/;
printf("%d, %d, %d", i, j, m);
得到这个答案:3,2,15

有很多条件,但主要是我们只允许使用数组和一个'1'和一个'+'每个变量等于

我通过反复试验得到了正确的答案,但我不知道我是如何得到正确答案的。这是我的密码:

int main()
{
   int a[5] = {5, 1, 15, 20, 25};
   int i, j, m;
   i = ++a[1];
   j = a[1]++;
   m = a[i++];
   printf("%d, %d, %d", i, j, m);
   _getch();
   return 0;
}
我只是好奇我是如何得到正确答案的。任何解释都很好


提前感谢。

那么,请看以下三个陈述:

i = ++a[1];
这将a[1]更改为2,并将该值指定给i

这将j设置为2,并将a[1]更改为3

这将m设置为15,将i更改为3

所以打印的最终值是所需的值,3,2,15


如果在调试器中运行此操作,您可以查看所有变量,并看到它逐个语句发生。

就像大家所说的,只需使用调试器逐步完成代码,或者手动:

起初

a[5] = {5, 1, 15, 20, 25}
在i=++a[1]之后

因为pre-incrementation++会在将a[1]修改为i之前对其进行修改

j=a[1]++之后

因为post incrementation++会在将a[1]影响到j之后修改它

m=a[i++]之后

因为后增量将矫揉造作后i的值修改为m,所以矫揉造作时i将等于2,即a[2]=15


你需要了解++a和a++之间的区别,以及这两个增量何时发生。

在你自己编译和链接代码之后,你用调试器逐步检查代码,在每一步检查var值,然后发生了什么事?@Martini得到了“3,2,15”的正确答案,如果这是你的意思的话。我真的不知道这个问题问的是什么。“我不知道我是怎么做到的,它是怎么做到的”-如果你还没有这样做,用你的调试器一步一步地检查代码,在每一步检查var值。这对你来说应该很容易,毕竟,你编写了代码,它给出了正确的结果。很明显,你对正在发生的事情有些了解,所以只需一步一步完成你的解释文档。提示:你的尝试和错误的基础是什么?这很有道理,谢谢。我知道2和15是如何实现的,但不知道3。非常感谢。
m = a[i++];
a[5] = {5, 1, 15, 20, 25}
a[5] = {5, 2, 15, 20, 25}
i = 2
a[5] = {5, 3, 15, 20, 25}
i = 2
j = 2
a[5] = {5, 3, 15, 20, 25}
i = 3
j = 2
m = 15