基本 int 数组提供意外输出
Basic int array giving unexpected output
#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。为什么我在上述两个代码示例中收到不同的输出?
阅读您的代码并回答我,y
与num
数组有任何关系吗?
当然不是,只是另一个变量。
int num[]{ 3, 5, 6, };
的另一个错误_________________________________^__
删除,
你只是说你的数组将有 4 个元素,你不是说数字将在最后一个空间,所以编译器只是把垃圾放在那里,然后你打印num
变量空间,因为数组就像指针,但没有一样。
(建议,删除逗号并记住计算机按从第 1 行到 N 的升序发出指令(
如果要使输出为 356,则需要将int
数据类型转换为char
string
因为这是一组字符。所以制作你自己的字符串化函数
#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提供的东西,这些是你的基本工具。
- 字符串比较中的意外输出
- 来自 decltype 的意外输出类型
- 字符数组到十六进制字符串的转换 - 意外输出
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 使用后序遍历递归的深度优先搜索会产生意外输出
- C++的意外输出
- 贝金纳C++练习解决方案的意外输出
- 无效* 转换获得意外输出
- 以下程序的意外输出
- 意外输出:矢量矢量(功率集)
- 基本 int 数组提供意外输出
- 线程的意外输出
- 减法中的意外输出
- 带有左移操作员C 的意外输出
- C strncpy意外输出
- 意外输出..函数绑定在虚拟表中的发生方式
- 星号的意外输出
- 已编译的 protobuf 文件的意外输出路径
- 打印对象矢量的意外输出
- 递归函数用于计算 n 个数字之和的意外输出