循环结束后,数组循环输出垃圾

时间:2013-11-16 20:02:09

标签: c++ arrays loops

我正在学习在C ++中使用数组。这是我练习概念的一个非常简单的程序。但是,当我启动程序时,命令提示符在输出1 2 3 4后输出垃圾。

当我将循环中数组的大小更改为2时,它可以正常工作。当我将其更改为零时,它仍然输出两个值。这是怎么回事?当数组表达式为2时,为什么输出4个值?当它只有2时,它不应该只输出3个值吗?

#include <iostream>
#include <conio.h>

int main()
{
    int array[4] = { 1, 2, 3, 4 };

    for (unsigned int i = 0; i <= array[3]; i++)
    {
        std::cout << array[i] << "\n" << std::flush;
    }


    _getch();
    return 0;
}

2 个答案:

答案 0 :(得分:4)

array[3] = 4因此当您i == array[3] == 4尝试访问未定义的array[4]时。您真的应该使用i < array[3]或(更好)i < 4,因为如果您有

int array[4] = { 0, 2, 5, 100 }

然后使用array[3]将为100,您将尝试循环100次。

答案 1 :(得分:2)

您正在进行5次迭代,因为array[3] = 4,然后当您打印array[i]时,您正在尝试打印未定义的array[4]。立即尝试:

for (unsigned int i = 0; i <= 3; i++)
{
    std::cout << array[i] << "\n" << std::flush;
}