此功能将十进制数转换为二进制数(我在互联网上创建了它)
foo(long dec)
{
long int rem,i=1,sum=0;
do
{
rem=dec%2;
sum=sum + (i*rem);
dec=dec/2;
i=i*10;
} while(dec>0);
return sum;
}
正如我所知,当我将类型“long”更改为“int”时,该函数对于大于1023的数字不起作用。问题是我必须使用整数参数运行此函数(它必须是foo (int dec))。我试过使用static_cast但是我失败了。
error: cannot convert ‘long int’ to ‘std::ios_base&(std::ios_base&)’ in assignment|
有没有办法绕过那个或者可能以某种方式改变这个功能。 谢谢你的帮助。
答案 0 :(得分:3)
首先,这个函数并不完全"将十进制转换为二进制"。相反,它会转换一个数字,如果你在基数10中打印出结果,那么它看起来就像数字的二进制表示。
其次,此函数定义无效,因为您未指定返回类型。
当然,如果您在参数列表中将long
更改为int
,并添加int
作为返回类型(并且您的系统int
小于{{{} 1}} s - 有些人不会因为数字而无法工作。
例如,如果您的系统具有32位整数,那么long
是最大的输出,它将来自输入1111111111
。
我不知道你在讨论static_cast和ios_base错误时,你必须做一些与此函数无关的事情。
答案 1 :(得分:1)
确保在函数定义中定义函数返回的类型,并确保foo将 long int 作为参数。
long int foo(long int) {
code...
}