C++ 出现的问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 14:41:49
输入一个数...用函数实现正反逐位输出;
#include<iostream.h>
void zheng(int m)
{
int s;
s=m%10;
m=m/10;
while(!m){
zheng(m);}
cout<<s;
}
void fan(int m)
{
int s;
s=m%10;
cout<<s;
m=m/10;
while(!m){
fan(m);}
}
void main(void)
{
int m;
cin>>m;
cout<<"正序数是"<<zheng(m)<<'\n';
cout<<"反序数是"<<fan(m)<<'\n';

}
可是错误显示 error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'void' (or there is no acceptable conversion)
问题出在哪里?

你的正反函数的返回类型都是void,没有办法输出返回值啊。

cout<<"正序数是"<<zheng(m)<<'\n';
cout<<"反序数是"<<fan(m)<<'\n';

改成:

cout<<"正序数是";
zheng(m);
cout<<"反序数是";
fan(m);

其实楼主犯了一个低级的错误,在
cout<<"正序数是"<<zheng(m)<<'\n';
cout<<"反序数是"<<fan(m)<<'\n';
这两句中,函数zheng(m)和fan(m)都是空类型,没有返回值,“<<”这个符号右边就没有值, 就出现了以上错误。
根据你的意思,要调用zheng()和fan()两个函数,将以上两句直接改为:
zheng(m);
fan(m);
就不会出现这个错误了。

cout<<"正序数是"<<zheng(m)<<'\n'; 这句话正确的前提是zheng(m)可以返回一个值,而你的方法 void zheng(int m) 返回值类型是void,cout<<void就会出错。