Cout 打印出不正确的 Bidimensional int 数组值,而代码似乎是正确的
Cout prints incorrect values of Bidimensional int array, while code appears to be correct
以下代码看起来是正确的,但它会打印不正确的数字,每次都是随机的!我从 C++ 站点上直接复制了它并交叉检查以确认代码是正确的!而且还是不行!
#include <iostream>
int main()
{
int a[3][4] = {
{0, 1, 2, 3} , /* initializers for row indexed by 0 */
{4, 5, 6, 7} , /* initializers for row indexed by 1 */
{8, 9, 10, 11} /* initializers for row indexed by 2 */
};
std::cout << a[3][4];
}
在c++中初始化数组时,传递到每个括号中的数字是数组的大小,但这是上限,实际上不是索引,而是限制。如果你的索引从 0 开始,并且数组中有 3 个项目,那么你的最后一行就是 2。这就是为什么 c++ 循环遍历数组总是
for(int i =0; i < array_size; i++)
强调 <
而不是 <=
。
在您的代码中,您对超出范围的项目进行索引;因为 a[3][4] 在技术上是第 4 列第 5 行。
C++ 会让你越界索引,而你实际上只是在内存中索引随机值,这并不好。
尝试打印 a[2][3]
,这应该是您所期望的。
以下代码看起来是正确的,但它会打印不正确的数字,每次都是随机的!我从 C++ 站点上直接复制了它并交叉检查以确认代码是正确的!而且还是不行!
#include <iostream>
int main()
{
int a[3][4] = {
{0, 1, 2, 3} , /* initializers for row indexed by 0 */
{4, 5, 6, 7} , /* initializers for row indexed by 1 */
{8, 9, 10, 11} /* initializers for row indexed by 2 */
};
std::cout << a[3][4];
}
在c++中初始化数组时,传递到每个括号中的数字是数组的大小,但这是上限,实际上不是索引,而是限制。如果你的索引从 0 开始,并且数组中有 3 个项目,那么你的最后一行就是 2。这就是为什么 c++ 循环遍历数组总是
for(int i =0; i < array_size; i++)
强调 <
而不是 <=
。
在您的代码中,您对超出范围的项目进行索引;因为 a[3][4] 在技术上是第 4 列第 5 行。
C++ 会让你越界索引,而你实际上只是在内存中索引随机值,这并不好。
尝试打印 a[2][3]
,这应该是您所期望的。