尝试创建一个更好的循环来命名数组元素

时间:2018-04-25 16:07:16

标签: c++ arrays loops variables for-loop

我已经开始研究数组并且刚刚开始进行一些练习但是我在使用循环来命名特定数组中的元素时遇到了一些问题。

我试图制作这段代码,将数字从1到12分配(类似于一年中的几个月)到数组内部的int,这就是我想出的:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int array[12];

for (int i = 0; i < 12;) {
    cout << "Month number " << i + 1 << endl;
    array[i] = (i++);
}

return 0;
}

我不喜欢这样的事实是我必须将for循环中的增量/减量空间留空。我最初尝试使代码看起来像这样:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int array[12];

for (int i = 0; i < 12; i++) {
    cout << "Month number " << i + 1 << endl;
    array[i] = i++;
}

return 0;
}

但是这样,即使阵列的第一个元素出现正确,后续的元素也没有。我认为这样做的原因是循环的最后一个语句中的i ++使i的值增加但是我无法找到解决方法,而不必添加另一行i--或者像我一样在我发布的第一个代码中。

有没有人可以帮我理解如何制作它以便我可以在特定数组元素内部存储i的值,增加1,而不是为整个循环增加它(如果可能的话)?

我知道有很多方法可以解决它,就像我在发布的第一个代码中所展示的那样,但是这些东西让我烦恼,所以我想让它更具视觉效果。

请记住,我只是一个初学者:) 提前感谢您的答案,并为长时间的问题感到抱歉。

编辑:显然,编码如下:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
    int array[12];

    for (int i = 0; i < 12; i++) {
        cout << "Month number " << i + 1 << endl;
        array[i] = i + 1;
    }
    cout << array[4] << endl;

    return 0;
}

使程序正常运行并且看起来像我想要的,但我无法理解它为什么会这样做:(

编辑2:显然,正如UnholySheep指出的那样,我错过了+ 1不修改整数值的事实,而++则没有。 感谢所有回答并解释++和+1如何工作的人!

2 个答案:

答案 0 :(得分:2)

再做一次i +。

for (int i = 0; i < 12; i++) 
{
    cout << "Month number " << i + 1 << endl;
    array[i] = i + 1;
}

现在很明显你实际上想从1开始然后到12,所以这似乎更好,重复次数更少:

 for (int i = 1; i <= 12; i++) 
 {
     cout << "Month number " << i << endl;
     array[i-1] = i;
 }

编辑:至于你的编辑,其工作原因是因为i ++运算符处理特定的i变量。它将现有的i递增1,使得下次访问i时,它将比以前多1个。

另一方面,写i + 1会创建一个全新的临时变量(实际上是常量)。所以当你写

array[i] = i+1; 

你说你希望我保持不变,但是你想要创建一个比我更大的新数字,然后将这个新数字放入数组中。

你甚至可以把它写得更长,完全明确:

int newNumber = i+1;
array[i] = newNumber;

答案 1 :(得分:0)

textView:shouldInteractWithURL:inRange:

没有理由在循环中增加i