2014-12-31 79 views
0

我試圖創建一個從十進制轉換爲二進制的程序,我遇到了麻煩。看看我所擁有的東西,並讓我在正確的方向上邁步,程序編譯但返回負數。我現在正在調試,但只要編譯器遇到num變量,它就會彈出一個負數。C++從二進制簡單轉換爲十進制

#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

您應該將其發佈爲codereview.stackexchange.com –

+1

int here [8]; here [8] = something;'是UB。 –

+0

C++中的數組不能像那樣工作。 –

回答

1

您可以複製結構,聯合等,但不能直接複製陣列。因爲這個原因,你不能返回一個數組並將其分配給另一個數組。可以使用std::arraystd::vector。這些stl容器可以被複制,從而解決你的問題。

Live Demo here

+0

謝謝,我得到它的工作。 –

+0

謝謝@ Jarod42。我將更新演示。 –

0

您正在將函數傳遞給數組之外的指針。此外,您正在返回數組中的元素。由8個元素組成的數組的索引從0到7.此外,您不能將數組作爲函數參數傳遞。 閱讀C++教程,然後再試一次

1

你正在做的事情有些不對勁。

1-我想你想在數組中保存每個十進制數的二進制文件。如果你想這樣做,你必須使用二維數組。 (例如小數:[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/