【发布时间】:2020-06-07 15:14:23
【问题描述】:
我有一个函数,当我在它打印的主页面上使用 printf("%c", *(k+i)); 打印它时返回 char*;
0' 10101001 Q -> Q
但如果我使用printf(" %c", *(k+i)); 打印,问题就会减少。
如果我在 tobinary 函数中打印,输出会像这样完美;
1010.011010011011101001011110001101010011111101111100111 -> 111011
我做错了什么?这是代码。
char *tobinary(double num) {
int length = 62;
char bin[length];
int intpart = (int)num;
double decpart = 1000*(num - intpart);
int i = 0;
while (intpart!=0) {
if(intpart%2 == 1) bin[3-i] = '1';
else bin[3-i] = '0';
intpart /= 2;
i++;
}
bin[i++] = '.';
while (i <= length) {
decpart *= 2;
if (decpart >= 1000) {
bin[i] = '1';
decpart -= 1000;
}
else bin[i] = '0';
i++;
}
char *k = bin;
return k;
}
int main(int argc, char **argv) {
char *k = tobinary(10.413);
for(int i = 0; i <= 62; ++i) {
printf("%c", *(k+i));
if (i==56) printf(" -> ");
}
}
【问题讨论】: