2014-04-05 70 views
-1

我正在將一個int傳遞給我的lame程序中的一個函數。它傳入一個數字將其轉換爲二進制表示形式,作爲一個int數組。將int值傳遞給一個函數時發生變化

typedef int bool; 

bool* conv2bin(int num) 
{ 
    blah blah blah return binary as bool array 
} 

我通過78,如果我通過後立即printf(),我得到781237412753-124?

我是C(來自C++)的新手,所以請告訴我我是否在做一些非常愚蠢的事情?

這似乎應該很容易,但它不是...?

編輯:

我做錯瘋玩:

printf("%d", num); 

編輯2: 它必須與INT東西,因爲在函數結束時,它會檢查,如果我們扣除數足以達到num == 0,但它表示我們不在0.它做的很奇怪。它還說,二進制爲0000000001001111,並且它應該是0000000001001110.

編輯3:

哇,我吸。謝謝弗洛里斯!這是一個漫長的一天。

+2

請出示你的'printf'聲明。我99%確定你的格式字符串錯誤。 – Floris

+1

blah blah does not compile –

+2

將'printf'改爲'printf(「%d \ n」,num);' - 我敢打賭,現在你會看到'78'後面有一個回車符或更多的數字背靠背)。錯誤是在你的代碼中的其他地方。展示更多。 – Floris

回答

2

這裏猜... 您的打印輸出以正確的兩位數字開頭:78

但是,如果您在格式化字符串的末尾沒有包含\n,那麼您打印的下一個內容將被連接起來。接下來的事情也會如此。

我懷疑你的問題就會消失,當你改變你的print語句

printf("%d\n", num); 
相關問題