【发布时间】:2014-06-15 11:00:03
【问题描述】:
#include<stdio.h>
int binary(char* a){
int bit_index = (sizeof(*a) * 8 - 1);
int i;
printf("\n bit_index : %d *a : %c \n",bit_index,*a);
for(i = 0; i < bit_index; i++){
printf("%d",(*a & (1 << i)));
}
printf("\n");
return 0;
}
int main(){
char a = 'a';
int b = 67;
float c = 3.14;
binary(&a);
return 0;
}
我正在将 char 转换为二进制表示。 上面的程序给出了一个垃圾o/p as,
bit_index : 7 *a : a
100003264
我希望上面的程序接受任何类型变量的输入以转换为二进制表示。
所以我使用 void* 而不是 char* 作为 func binary(void *) 的参数。但是使用时出现错误,
binary.c: In function ‘binary’:
binary.c:17:50: warning: dereferencing ‘void *’ pointer [enabled by default]
binary.c:17:2: error: invalid use of void expression
binary.c:19:16: warning: dereferencing ‘void *’ pointer [enabled by default]
binary.c:19:3: error: void value not ignored as it ought to be
有没有办法创建一个函数来输入任何类型的变量并将其二进制表示。
【问题讨论】:
-
只需在现有函数中添加
size参数即可。 -
char并不总是 8 位。而sizeof(char)按标准总是 1,所以sizeof(*a)*8应该是1*CHAR_BIT
标签: c