用C中的简单数组示例递减和递增

时间:2017-06-22 22:08:39

标签: c arrays

几个月前我开始学习编程,在大学学习C语言。今天,我尝试做一些事情,但编辑器中的结果没有显示正确的结果。这是代码:

#include <stdio.h>
int main()
{
    int a[7]={1,2,3,4,5,6,7};
    int x,y,z;
    x=--a[5];     //In my opinion I got the result 5, because at the index of 5
                  //is element with value of 6, I decremented that number and got 5
    y=a[3]+a[x];  //a[3]+a[5] in this case, I get a[8], and value for that index is 9
    z=a[x++];     //I do this: a[5++], switched the value of x which is 5 and increment, and at the index of 5 was value of 6, I think
    printf("%d,%d,%d",x,y,z);
}

在我的编辑器中,结果是:6,9,5
就我而言,我得到了结果:5,9,6

我知道这是一个无用的问题,但我无法解决问题。 也许是关于增量和减量的操作。

2 个答案:

答案 0 :(得分:1)

x = - a [5] ==&gt; x =( - (a [5]))==&gt; x =(a [5] = a [5] -1)==&gt; x =(a [5] = 6-1)==&gt; x =(a [5] = 5)==&gt; X = 5

y = a [3] + a [5] ==&gt; y = 4 + 5 ==&gt; Y = 9

z = a [x ++] ==&gt; z = a [x]且x = x + 1 ==&gt; z = a [5]且x = 5 + 1 ==&gt; z = 5且x = 6

最后x = 6,y = 9且z = 5

如果你弄错了,[3] + a [5]不等于[3 + 5],即[8]。 a [3] + a [5] = a [3]的值+ [5]

的值

而且,似乎你错误地解释了一些事情。您的数组 a 只有 0到6 的索引。请记住,索引8及以上的值不是8,9,10 ...它们是垃圾值,也可能是负数。通过诸如[8]之类的东西访问它们将导致未定义的行为

答案 1 :(得分:1)

这是不正确的:

y=a[3]+a[x];  //a[3]+a[5] in this case,i get a[8],and value for that index is 9

a[8]是您a[3 + x]而不是a[3] + a[x]所得到的。

a[3]4a[x] a[5]5,因此a[3] + a[x] = 4 + 5 = 9

相关问题