我正在学习在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;
}
答案 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;
}