C++ 当涉及到阵列时,循环逻辑的基本要求是什么?

C++ 当涉及到阵列时,循环逻辑的基本要求是什么?,c++,arrays,for-loop,C++,Arrays,For Loop,我很难理解简单的逻辑,因为数组以0开头。我要简化我的问题: 我有一个大小为5的数组。索引如下[0]、[1]、[2]、[3]、[4]。增量为2。 我需要检查每个增量元素之间的差异 //So the result I want: var1 = a[2] - a[0] var2 = a[4] - a[2]. //My for loop: incr = 2; size = 5; for (x = 0; x + incr < size; x+= incr) var[] = a[x + inc

我很难理解简单的逻辑,因为数组以0开头。我要简化我的问题:

我有一个大小为5的数组。索引如下[0]、[1]、[2]、[3]、[4]。增量为2。 我需要检查每个增量元素之间的差异

//So the result I want:
var1 = a[2] - a[0]
var2 = a[4] - a[2].
//My for loop:
incr = 2;
size = 5;
for (x = 0; x + incr < size; x+= incr)
    var[] = a[x + incr] - a[x]

当[x+incr]将超出边界时,这种for循环将失败。我怎样才能正确地构造它?

它不会超出范围。如果x+incr确实>=size,则for条件将失败,并且不会在中执行语句。

通常,必须使用len方法或length属性或编程语言支持的任何内容来计算size,但是,在这种情况下,我可以看到您手动指定了size=5,所以,若数组a的实际长度小于5,且x+incr>=5,则会导致一个越界错误

我怎样才能正确地构造它

如果使用以下选项,则无需编写循环:


您可能使用的编译器具有支持随机事物的奇特扩展,但var[]=a[x+incr]-a[x]这不是有效的标准语法。既然你没有解释什么是真正失败的,我假设失败就在这一行。首先,将var定义为您想要输出的大小和类型。在本例中,我假设您需要一个大小为2的整数数组,因为对于一个大小为5的数组,需要计算2个实例

int var[2];
然后在数组中使用索引将值放入它们所属的var中,记住增加放置位置

int place_index = 0;
for (x = 0; x + incr < size; x+= incr){
    var[place_index] = a[x + incr] - a[x];
    place_index++;
}
然后可以显示结果

for (x = 0; x < 2; x++)
    std::cout << var[x] << ' ';
给定一个[5]={0,1,2,3,4},这将打印2。给定一个[5]={0,2,4,6,8},这将打印出4。给定一个[5]={0,2,8,32,128},这将打印8120


还有其他方法可以使用迭代器、转换、标准库等解决此问题。

它是如何失败的?第一个x是0,x+incrint place_index = 0; for (x = 0; x + incr < size; x+= incr){ var[place_index] = a[x + incr] - a[x]; place_index++; }
for (x = 0; x < 2; x++)
    std::cout << var[x] << ' ';