【发布时间】:2020-04-10 15:57:59
【问题描述】:
给我这个程序将输入的十进制数转换为 二进制 数字的字符串。现在这是一个正确的程序并且确实有效。我对while 循环表达ch = (rem + 48); 表示怀疑我相信余数rem 的值最终将被ch 继承,那么为什么要添加0 即。 48 用 ascii 术语来说是有区别的。什么使添加 48 将 rem 转换为字符形式。如果我只写ch = rem;,ch 不被视为字符,添加 48 使其成为字符。但是为什么???
void main()
{
char x[15],tmp,ch;
int i=0,j=0,dno,rem;
printf("\nEnter decimal number:");
scanf("%d",&dno);
while(dno>0)
{
rem = dno % 2;
ch = (rem+48);
x[j++] = ch;
dno/=2;
}
x[j--]='\0';
while(i<j)
{
tmp = x[j];
x[j--] = x[i];
x[i++] = tmp;
}
puts(x);
return;
}
【问题讨论】:
-
使用
'0'的“字符文字”表示而不是“幻数”48是更好的做法(也更清晰)!这可能会有所帮助(尽管转换是相反的):stackoverflow.com/q/628761/10871073 -
感谢这个问题链接对我帮助很大的兄弟。感谢您的帮助.......