【发布时间】:2015-07-20 07:32:35
【问题描述】:
下面是我将二进制转换为十进制的代码,但我怀疑当我将数据输入为 100000 时,它会给出准确的答案。超出整数范围如何给出正确答案?
int main()
{int rem,deci=0,a=1,b;
int bin;
printf("size of int :- %d",sizeof(int));
printf("enter the binary value");
scanf("%d",&bin);
while(bin!=0)
{
rem=bin%10;
deci=deci+rem*a;
a=a*2;
bin=bin/10;
}
printf("%d \n",deci);
}
【问题讨论】:
-
这个程序的预期和实际输出是什么?
-
100000 并没有超出
int的范围,在当今几乎所有的架构/实现中。除非您看到打印了size of int :- 2行,否则您也不是这种情况。 -
它在这里工作。问题出在哪里?
-
sizeofreturns asize_tand must be printed with%zu。以错误的格式打印会引发未定义的行为。 -
这并不是真正的二进制到十进制转换......如果你想要这样的转换,你应该读取一个字符串(例如
fgets),而不是一些int变量bin,
标签: c