中易网

关于C++的COUT调用函数问题(本人初学C++)

答案:3  悬赏:60  
解决时间 2021-02-18 22:34
#include<iostream>
using namespace std;
void output_1()
{
cout << "Three bilnd mice"<< endl <<"Three bilnd mice";

}

void output_2()
{
cout << "See how they run" << endl << "See how they run";

}

void main()
{
cout << output_1() << endl;
cout << output_2() << endl;
system("pause");

}

问题1)为什么提示 main()里的" <<"没有与这些操作匹配“<<”的运算符,操作数类型为std::ostream <<void
然后调试失败
问题2)把 这三个函数 修改为int 型后,为什么输出结果是
Three bilnd mice
Three bilnd mice0
See how they run
See how they run0

会多个0出来?
最佳答案
其实这两个是一个问题
cout<<xxx的意义是,将xxx送入标准输出流中
你的例子里,cout<<output_1();的意义就是“将output_1()运行的结果送入标准输出流”
可是开始你将output_1()声明成了void,就是说这个函数运行完成以后没有返回值,或者说这个函数只进行操作,不产生结果,这样放在cout<<output_1()中就会产生错误,因为<<运算符没有针对void类型的运算规则,也就是你的问题1
当你将output_1()声明ch成int以后,也就是说output_1()运行完成以后会产生一个int类型的结果,也就是返回值,这个返回值会被<<送进标准输出流,所以output_1()自己的输出完成了以后,main又输出了output_1()的返回值,当然你在一个声明有返回值的函数定义里面没有写return语句,某些编译器可能直接会给你报错,有的会让你过,你的问题2中多的0就是这么来的,但是这个0没有意义,在不同的硬件环境,不同的编译环境里,这个值都有可能不同

还有问题请追问
全部回答
<< 中的 计算过程为 从右到左 。 cout << fram()  //第三次调用 << fram() //第二次调用 << fram() //第一次调用 << endl;
把主函数中的cout去掉,只留下output函数名,就可以输出了.因为你的output函数里已经有cout,所以就相当于cout<<cout << "Three bilnd mice"<< endl <<"Three bilnd mice";这是不对的. 问题2:改成int之后应该也是输出不了的,因为没有返回值.int,double等类型的函数都需要一个返回值return X;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
今天刚带上面的牙套,吃饭时上下牙一碰就疼,
鸦湖乡华侨幸福会所这个地址在什么地方,我要
中源协和为什么用唾液做标本检测基因?
不小心把桌面变这样了 ,请问怎么把变回去?
渣土车撞人致死 如何处理 需要承担刑事责任吗
如果要使灯光变暗,方法是增大( ),减小(
博之彩印务地址有知道的么?有点事想过去
这只笔可以用来画素描么? 用的2b铅,平时素
之前租的房子交电费也忘记是怎么弄的了,把房
历代王朝基本沿用什么制度
CF卡无法读出数据
东兴餐厅地址有知道的么?有点事想过去
我国庆想去浙江万里学院西校区去看同学,那附
准备去新沂蒙驾校学车,吧里有在那学过的吗
2017年最新排行榜上的炒股软件哪个好?模拟的
推荐资讯
邻家超市在哪里啊,我有事要去这个地方
10kv及0.6kv的电缆耐压是多少?急求!!!
等体过程的热力学第一定律是什么
大煮干丝家常做法,正宗大煮干丝怎么做
薜颠怎么死的
星光七队这个地址在什么地方,我要处理点事
连锁餐饮公司上市前需将直营店转变成加盟店吗
root后还能恢复未root吗?
木地板防水吗
有用过佛伦斯陶瓷的么?质量怎样
广发银行的待遇怎么样?
美国学乐儿童英语(昆区校区)地址在什么地方,
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?