求真大神指点,说详细些 ,谢谢!

weixin_36747231 2017-01-03 09:02:28
d:\documents\visual studio 2012\projects\右值引用转换二进制为十进制\右值引用转换二进制为十进制\右值引用转换二进制为十进制.cpp(22): error C2664: “bin_dec”: 不能将参数 1 从“int”转换为“int &”
1>d:\documents\visual studio 2012\projects\右值引用转换二进制为十进制\右值引用转换二进制为十进制\右值引用转换二进制为十进制.cpp(27): error C2664: “bin_dec”: 不能将参数 1 从“int”转换为“int &”
1>d:\documents\visual studio 2012\projects\右值引用转换二进制为十进制\右值引用转换二进制为十进制\右值引用转换二进制为十进制.cpp(33): error C2664: “bin_dec”: 不能将参数 1 从“int”转换为“int &”
1>d:\documents\visual studio 2012\projects\右值引用转换二进制为十进制\右值引用转换二进制为十进制\右值引用转换二进制为十进制.cpp(34): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>d:\documents\visual studio 2012\projects\右值引用转换二进制为十进制\右值引用转换二进制为十进制\右值引用转换二进制为十进制.cpp(38): error C2664: “bin_dec”: 不能将参数 1 从“int”转换为“int &”
1>d:\documents\visual studio 2012\projects\右值引用转换二进制为十进制\右值引用转换二进制为十进制\右值引用转换二进制为十进制.cpp(50): fatal error C1075: 与左侧的 大括号“{”(位于“d:\documents\visual studio 2012\projects\右值引用转换二进制为十进制\右值引用转换二进制为十进制\右值引用转换二进制为十进制.cpp(13)”)匹配之前遇到文件结束



int bin_dec(int&x,int&&n)
{
if(n==0)
return 1;
return x*bin_dec(x,n-1);
}

int _tmain(int argc, _TCHAR* argv[])
{
int i;
int ip[4]={0};
char a[33];
printf("输入二进制数:\n");
scanf_s("%s",a);
for(i=0;i<8;i++)
{
if(a[i]=='1')
ip[0]+=bin_dec(2,7-i);
}
for(i=8;i<16;i++)
{
if(a[i]='1')
ip[1]+=bin_dec(2,15-i);
}
for(i=16;i<24;i++)
{
if(a[i]=='1')
{
ip[2]+=bin_dec(2,23-i)
}
for(i=24;i<32;i++)
{
if(a[i]=='1')
ip[3]+=bin_dec(2,31-i);
if(a[i]=='\0')
break;
}
printf("IP:\n");
printf("%d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]);
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_36747231 2017-01-04
  • 打赏
  • 举报
回复
@KinoluKaslana实力杠杠的,分全送你了!,么么哒!
yes-hyh 2017-01-04
  • 打赏
  • 举报
回复
如果一定要用引用, 但不要求一定要右值引用,也可以这样

int bin_dec(const int & x, const int & n)
{
	if (n == 0)
		return 1;
	return x*bin_dec(x, n - 1);
}
yes-hyh 2017-01-04
  • 打赏
  • 举报
回复
不知道楼主目的是什么, 为什么bin_dec(int,int)不好用!!!!若是在不这样的话,还可以改这样。

int bin_dec(int&&x, int&&n)
{
	if (n == 0)
		return 1;
	return x*bin_dec(std::forward<int>(x), n - 1);
}
KinoluKaslana 2017-01-04
  • 打赏
  • 举报
回复
#include<stdio.h>
#include <tchar.h>
int bin_dec(int &x, int &n)
{
	int i;
	if (n == 0)
		return 1;
	i = n - 1;
	return x*bin_dec(x, i);
}

int _tmain(int argc, _TCHAR* argv[])
{
	int i, j;
	int ip[4] = { 0 };
	char a[33];
	int c = 2, b = 7,d = 15,e = 23,f = 31;
	printf("输入二进制数:\n");
	scanf_s("%s", a,33);
	for (i = 0; i < 8; i++)
	{		
		if (a[i] == '1')
		{
			j = b - i;
			ip[0] += bin_dec(c, j);
		}			
	}
	for (i = 8; i < 16; i++)
	{		
		if (a[i] = '1')
		{
			j = d - i;
			ip[1] += bin_dec(c, j);
		}
	}
	for (i = 16; i < 24; i++)
	{
		j = d - i;
		if (a[i] == '1')
		{
			j = d - i;
			ip[2] += bin_dec(c, j);
		}
		for (i = 24; i < 32; i++)
		{
			if (a[i] == '1')
			{
				j = f - i;
				ip[3] += bin_dec(c,	j);
			}
			if (a[i] == '\0')
				break;
		}
		printf("IP:\n");
		printf("%d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);
	}
}
weixin_36747231 2017-01-04
  • 打赏
  • 举报
回复
@KinoluKaslana:在我的代码上演示下:谢谢大神!
KinoluKaslana 2017-01-04
  • 打赏
  • 举报
回复
常数怎么引用?改成变量就好吧,一个式子怎么引用??(黑人问好.jpg)
weixin_36747231 2017-01-04
  • 打赏
  • 举报
回复
bin_dec 声明改成这样 bin_dec(int,int)。错误,不好用,还有其他的方法吗、
ri_aje 2017-01-03
  • 打赏
  • 举报
回复
bin_dec 声明改成这样 bin_dec(int,int)。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧