#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