C++ 为什么阵列不在这里打印?(c+;+;)

C++ 为什么阵列不在这里打印?(c+;+;),c++,C++,我拥有的阵列是 int age[5] = {11,2,23,4,15} 但它不会打印出11,2,23,4,15 #include <iostream> #include <array> using namespace std; int main() { int age[5] = {11,2,23,4,15}; cout << age[5] << endl; } #包括 #包括 使用名称空间std; int main(){ in

我拥有的阵列是

int age[5] = {11,2,23,4,15}
但它不会打印出
11,2,23,4,15

#include <iostream>
#include <array>

using namespace std;

int main() {
  int age[5] = {11,2,23,4,15};
  
  cout << age[5] << endl;
}
#包括
#包括
使用名称空间std;
int main(){
int age[5]={11,2,23,4,15};

cout数组是0索引的。在您的示例中,有效索引是0..4。您正在尝试从
age[5]
打印单个
int
,这超出了范围

您需要循环遍历数组的索引,例如:

#包括
使用名称空间std;
int main(){
int age[5]={11,2,23,4,15};
对于(int i=0;i<5;++i){

cout数组的名称不是
age[5]

数组的名称为
age

表达式
age[5]
表示数组中不存在的第六个元素


事实上,没有以格式化方式打印整个数组的内置逻辑,因此即使
cout
age[5]
也会打印出数组的第6个元素(因为数组从索引0开始),并且该元素不存在。您需要在数组上循环并手动打印每个元素。我发现这种对数组的误解是多么普遍,这让我感到惊讶。
age[5]
表示“整个数组”并不是任何教科书或You Tube视频中所说的,无论质量有多差。它完全是在许多认为这是真的新手的头脑中产生的,我猜他们一定忘记了声明和表达式之间的区别。@john为了公平起见,不难看出误解在哪里来自.Basic声明的OME看起来像
type name=initializer
;他们还没有意识到现实远比这复杂,这并不是新来者的错。这是语言的错。尽管他们也应该更详细地阅读他们的书,而不是猜测,当它不起作用时就放弃。@swithWings但是(使用上面的例子)我们大概知道
age[0]
是数组的第一个元素,
age[1]
是第二个元素,等等。但是
age[n]
的含义在n与数组大小相同时突然发生了变化?如果是这样的话,那将是一种奇怪的语言。