#include<stdio.h>
#include<conio.h>
unsigned * bin(unsigned n) {
unsigned a[16];
int i = 0, j = 0;
for (i = 0; i < 16; i++) {
a[i] = n & 0x1;
n = n >> 1;
}
return a;
}
void main() {
unsigned n = 5;
int i = 0;
unsigned * a = bin(n);
for (i = 15; i >= 0; i--) {
printf("%d\n", (*(a + i)));
}
getch();
}
請幫助這個二進制轉換不起作用。我試圖用二進制翻譯法計算x^n
。 可以幫助嗎?爲什麼這個二進制轉換不起作用?
'a'具有自動存儲持續時間,並且不會超過'bin'結束。你正在返回一個懸掛指針。你會希望'malloc'(或'new' up)一個數組返回,並在調用者中釋放(或'delete []')它。或者,在C++中,改爲使用'std :: vector',這將爲您處理世俗的內存。 – cHao 2013-05-08 15:33:02
首先要做的事情(在發佈之前)可能會讀取編譯器警告。你的編譯器通常會返回返回局部變量的問題。 – 2013-05-08 15:36:46
我應該補充說''不僅不可移植,而且在少數支持它的系統上不推薦使用,並且'main'需要'int'作爲返回類型。 –
2013-05-08 15:37:33