[英]Problem with converting decimal number to binary with C as translation from python code
我尝试首先编写 python 代码,其中一切正常,但现在当我试图在没有指针和数组分配的情况下将所有内容放在一起时,没有任何效果如我所愿。 我现在知道数字不能用数组表示,所以我决定控制除法中的 rest 是零还是一,而不是分配字符串表示零或一。 --> 警告:从 'char *' 赋值给 'char' 使指针变为 integer
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// IN PYTHON
// import math
//# 100100
// decimal_number = 36 (36, 18, 9, 4, 2, 1, 0)
// binary_number = ""
// while decimal_number > 0:
// tmp = decimal_number % 2
// binary_number = str(tmp) + binary_number
// decimal_number = math.floor((decimal_number / 2))
// print(binary_number)
int main()
{
int decimal_number = 4;
int len_arr = 7;
char binary_number[len_arr];
int counter = 0;
char tmp_s;
while (decimal_number > 0)
{
int tmp_i = decimal_number % 2;
if (tmp_i == 0)
{
tmp_s = "0";
}
else
{
tmp_s = "1";
}
binary_number[counter] = tmp_s;
decimal_number = floor((decimal_number / 2));
counter++;
}
binary_number[counter] = '\0';
printf("%s", binary_number);
return 0;
}
警告:从“char *”赋值给“char”使指针变为 integer
那是因为tmp_s
被声明为保存单个字符,因此预期保存一个character constant
( integer -机器字符集中字符的数值,写为单引号内的一个字符)......但是代码试图将一个string constant
(由双引号括起来的零个或多个字符组成的序列——从技术上讲,是一个字符数组)分配给这个变量,这里tmp_s = "0";
这里tmp_s = "1";
.
tmp_s
应该赋值,字符0
和1
的数值... tmp_s = '0';
和tmp_s = '1';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.