Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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,大约几个月前,我开始学习编程,在学院学习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 ele

大约几个月前,我开始学习编程,在学院学习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);
}
#包括
int main()
{
int a[7]={1,2,3,4,5,6,7};
int x,y,z;
x=--a[5];//在我看来,我得到了结果5,因为在索引为5时
//是值为6的元素,我将该数字递减,得到5
y=a[3]+a[x];//a[3]+a[5]在这种情况下,我得到一个[8],该索引的值是9
z=a[x++];//我这样做:a[5++],切换x的值,即5和增量,在索引5处,我想是值6
printf(“%d,%d,%d”,x,y,z);
}
在我的编辑器中,结果是:
6,9,5

在我的例子中,我得到了结果:
5,9,6

我知道这是个没用的问题,但我解决不了这个问题。 也许是关于递增和递减的运算。

x=--a[5]=>x=-(a[5])=>x=(a[5]=a[5]-1)=>x=(a[5]=6-1)=>x=(a[5]=5)=>x=5

y=a[3]+a[5]=>y=4+5==>y=9

z=a[x++]=>z=a[x]和x=x+1=>z=a[5]和x=5+1=>z=5和x=6

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


万一你弄错了,a[3]+a[5]不等于a[3+5],也就是a[8]。a[3]+a[5]=a[3]处的值+a[5]处的值


而且,看起来你对事情的理解有点错误。数组a的索引范围仅为0到6。记住,索引8及以上的值不是8,9,10。。。它们是垃圾值,也可能是负数。而通过[8]…之类的东西访问它们将导致未定义的行为。

x=--a[5]=>x=(-(a[5])=>x=(a[5]=a[5]-1)=>x=(a[5]=6-1)=>x=(a[5]=5)=>x=5

y=a[3]+a[5]=>y=4+5==>y=9

z=a[x++]=>z=a[x]和x=x+1=>z=a[5]和x=5+1=>z=5和x=6

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


万一你弄错了,a[3]+a[5]不等于a[3+5],也就是a[8]。a[3]+a[5]=a[3]处的值+a[5]处的值


而且,看起来你对事情的理解有点错误。数组a的索引范围仅为0到6。记住,索引8及以上的值不是8,9,10。。。它们是垃圾值,也可能是负数。通过[8]之类的东西访问它们会导致未定义的行为。

这是不正确的:

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]
4
a[x]
a[5]
5
,所以
a[3]+a[x]
=
4+5=9
这是不正确的:

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]
4
a[x]
a[5]
5
,所以
a[3]+a[x]
=
4+5=9
“在这种情况下,我得到了一个[8],该索引的值是9”-好的,你是怎么想到这些的?”在我的编辑器中,结果是6,9,5”-一个编辑器不执行C代码。你的具体问题是什么?哪一个操作符不清楚,而且无法通过简单的搜索找到?@Olaf他可能使用了像visualstudio这样的集成IDE,所以编辑器执行代码。
a[3]+a[x]
a[3+x]
@Barmar:即使这样,编辑器也不会执行代码。
a[3]+a[5]在这种情况下,我得到了一个[8],该索引的值是9”-好的,你是怎么想到这些的?“在我的编辑器中,结果是6,9,5”-编辑器不执行C代码。你的具体问题是什么?哪一个操作符不清楚,通过简单的搜索无法找到?@Olaf他可能正在使用一个集成的IDE,比如Visual Studio,所以编辑器执行代码。
a[3]+a[x]
a[3+x]
@Barmar:即使这样,编辑器也不会执行代码。非常感谢,现在我看到了差异,非常感谢,现在我看到了你帮助我的不同之处,我认为要添加数组之外的内容,但这是不可能的,也许是可能的,但这将是一些未定义的内容,谢谢lot@MarkOn1很高兴帮助。。。!你们帮了我的忙,我以为要添加数组之外的东西,但这是不可能的,也许是可能的,但那将是一些未定义的东西,谢谢大家lot@MarkOn1很高兴帮助。。。!