我试图创建一个从十进制转换为二进制的程序,但我遇到了麻烦。看看我有什么,并给我一个正确的方向,程序编译但返回负数。我正在调试,但是一旦编译器点击num
变量,它就会弹出一个负数。
#include <iostream>
using namespace std;
int hexConvert(int* num, int Hexes[8]) {
//int* Hexes[8] = &Hexes[8];
int empty[8];
for(int i = 0; i < 8; i++) {
if(Hexes[i]-*num >= 0) {
*num = (Hexes[i] - *num);
empty[i] = 1;
} else
empty[i] = 0;
}
return empty[8];
}
int Hexes[8] = {128,64,32,16,8,4,2,1};
int main() {
int num = 0;
int here[8];
here[8] = hexConvert(&num,&Hexes[8]);
for (int i = 0; i < 8; i++)
cout << here[i];
}
答案 0 :(得分:1)
在c++中,您可以复制结构,联合等,但不能直接复制数组。由于这个原因,您无法返回数组并将其分配给另一个数组。
您可以使用somearr[8]
或std::array
代替std::vector
。可以复制这些stl容器,从而解决您的问题。
答案 1 :(得分:1)
你做错了什么。
1-我想你想为每个十进制数字保存数组中的二进制文件。如果要执行此操作,则必须使用2d数组。 (例如小数:[2,4,7]二进制文件:[[0,1,0],[1,0,0],[1,1,1])
2-你以错误的方式使用数组。如果要将数组发送到函数,则必须使用:
// lets say this is a function takes an array
void foo(int ex[8]);
.
.
.
int main() {
int myArray[8];
.
.
//you must call it like that
foo(myArray);
//or
foo(&myArray[0]);
3-你要返回一个int而不是int []。也许你想在你的函数中使用输出参数,这可能有所帮助。
您必须在C ++中搜索和学习数组使用情况。访问http://www.cplusplus.com/doc/tutorial/arrays/
答案 2 :(得分:0)
您正在将函数传递给数组外部的指针。此外,您将从数组中返回一个元素。包含8个元素的数组的索引从0到7.此外,您不能将数组作为函数参数传递。 阅读关于C ++的教程,然后再试一次