将int转换为long C ++

时间:2015-03-04 20:42:26

标签: c++

此功能将十进制数转换为二进制数(我在互联网上创建了它)

  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|

有没有办法绕过那个或者可能以某种方式改变这个功能。 谢谢你的帮助。

2 个答案:

答案 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...

}