使用函数时发生cout错误
cout error while using functions
我在尝试创建一个使用函数将十进制数转换为二进制数的代码时遇到了一个问题。起初,我只使用main函数创建了代码,它运行良好,但决定将其修改为use函数。我相信代码写对了,但是当我尝试cout
时,我得到了一个像115120160758866453687091316369641637416
这样的大数字。
这是代码
#include <iostream>
#include <math.h>
using namespace std;
int* unsigned_dec(int dec_M) { //function for converting absolute part of numbers
int bin[8] = { 0,0,0,0,0,0,0,0 };
int ind = 7;
int arr_ind = 0;
for (int base = (int)abs(dec_M); base > 0; base = base / 2) {
if (base % 2 == 0) {
bin[arr_ind] = 0;
ind--;
}
else {
bin[arr_ind] = 1;
ind--;
}
arr_ind++;
}
return bin;
}
int main() {// main function
int dec_N;
cin >> dec_N;
int* bin_main = unsigned_dec(dec_N); //we are not sure if we are assigning the returned value of function to array in correct
for (int i = 0; i <= 7; i++) {
cout << bin_main[i];
}
cout << endl;
return 0;
}
然后我尝试将cout代码更改为
cout << bin_main[0] << bin_main[1] << bin_main[2] << bin_main[3] << bin_main[4] << bin_main[5] << bin_main[6] << bin_main[7] << endl;
这很好。然后我用另一种方式写了同样的cout的第二个变体
cout << bin_main[0];
cout << bin_main[1];
cout << bin_main[2];
cout << bin_main[3];
cout << bin_main[4];
cout << bin_main[5];
cout << bin_main[6];
cout << bin_main[7];
cout << endl;
并且我的代码开始CCD_ 3相同的奇怪数字。我认为couts
的所有3种方式几乎相同(尤其是2和3),但不明白是什么导致它不起作用。
int bin[8] = { 0,0,0,0,0,0,0,0 };
在堆栈上分配。您应该在堆上分配bin
auto bin = std::unique_ptr<int, std::default_deleter<int[]>>(new int[8]);
或者更好,使用std::vector
您正在返回指向main
中intbin[]的本地数组的指针。一旦调用
cout
中的另一个函数(即CCD_10运算符),函数unsigned_dec堆栈上的此数组将失效。
一个更好的方法是使用向量,并使函数返回向量。
类似于:
#include <iostream>
#include <math.h>
using namespace std;
//function for converting absolute part of numbers
vector<int> unsigned_dec(int dec_M) {
vector<int> bin; // Create a vector
bin.resize(8, 0); // Fill it with 8 elements initialized to zero
int arr_ind = 0;
// Note: added check for arr_ind being valid
for (int base = (int)abs(dec_M); base > 0 && arr_ind < 8; base = base / 2) {
if (base % 2 == 0) {
bin[arr_ind] = 0;
}
else {
bin[arr_ind] = 1;
}
arr_ind++;
}
return bin; // Return the vector
}
int main() {
int dec_N;
cin >> dec_N;
vector<int> bin_main = unsigned_dec(dec_N);
for (int i = 0; i < bin_main.size(); i++) {
cout << bin_main[i];
}
cout << endl;
return 0;
}
相关文章:
- std::cout输出int时出现编译错误
- C++代码停止工作错误使用cout内部函数
- cout 新创建的对象引发运行时错误
- 错误:在尝试检测 std::cout 是否<< t 时,功能强制转换为数组类型;有效
- 错误:三元运算符无法在对象中正常工作"cout"
- 如何摆脱错误c2061;语法错误 cout?
- 我收到一个断言错误,但是当我编写 cout 语句时,它会消失
- 删除cout会导致分段错误
- 如何解决"cout was not declared in this scope"错误?
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 一个语句中没有多个 cout 的错误/警告
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- 为什么<<低;和 cout<<v.begin;单独给出错误,但 cout <<(lower.begin());没有给出任何错误,并使代码易于编译
- 如何修复" no match for 'operator<<' in 'std::cout"错误?
- 每当尝试打印函数变量时,C++ cout 错误
- cout错误地打印出字符串的Vector
- C++字符串cout错误
- 使用函数时发生cout错误
- 过载<<比如cout错误
- 奇怪的std::cout错误