基本 int 数组提供意外输出

Basic int array giving unexpected output

本文关键字:意外 输出 int 数组 基本      更新时间:2023-10-16
#include <iostream>
#include <string>
using namespace std;
int num[3]{ 3, 5, 6, };
cout << num[3] << endl;
string y;
getline(cin, y);
return 0;
}

给出 -858993460 的输出

#include <iostream>
#include <string>
using namespace std;
int num[]{ 3, 5, 6, };
cout << num << endl;
string y;
getline(cin, y);
return 0;
}

输出为 004FFC48

但我希望我的输出是 356。为什么我在上述两个代码示例中收到不同的输出?

阅读您的代码并回答我,ynum数组有任何关系吗?
当然不是,只是另一个变量。

int num[]{ 3, 5, 6, };的另一个错误
_________________________________^__
删除,你只是说你的数组将有 4 个元素,你不是说数字将在最后一个空间,所以编译器只是把垃圾放在那里,然后你打印num变量空间,因为数组就像指针,但没有一样。
(建议,删除逗号并记住计算机按从第 1 行到 N 的升序发出指令(

如果要使输出为 356,则需要将int数据类型转换为charstring因为这是一组字符。所以制作你自己的字符串化函数

#include <iostream>
#include <string> // is ambiguous because iostream already have string
using namespace std;
// where is the main function?
int num[]{ 3, 5, 6, };
cout << num << endl;// this should be in a for statement at the end of the program because you output the proccesed values
string y; // container of chars
getline(cin, y); //why do you need this?
return 0;
}

固定:

#include <iostream>
using namespace std;
int main() {
//just for printing the numbers
int num[]{3, 5, 6};
for (int i = 0; i < 3; i++)
cout << num[i] << endl;
return 0;
}

首先,作为基本建议,出于教育原因,请阅读指针算术的主题。

现在,让我们为您提供一些可以使用的代码。

原始数组使用起来有些笨拙。在某些情况下,您想这样做,但在这种情况下不是。这里要做的是使用 STL 容器,例如std::vector。这个行为类似于一个数组,但也知道它的大小并为您做一些其他好事。如果使用 C++11 或更高版本,则可以使用列表初始化它们,就像使用数组一样:

std::vector<int> numbers = { 3, 5, 6 };

接下来,数组或类似类型没有本机打印。在这里做的一件好事是编写一个函数来执行此操作:

void print(const vector<int>& vec)
for(size_t i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
cout << endl;
}

如您所见,这非常有效,因为vector具有size()的方法。我们不必在代码中使用 3(一个"幻数"(,我们已经写了一个可以在将来重用的部分(我们的函数(。

不是你问题的实际答案,但我认为这对你将来有帮助。一般来说,仔细看看STL提供的东西,这些是你的基本工具。