一个超简单cout的问题!!急!

猫头鹰与猫 2013-08-31 02:47:47
#include "C9.h"
double average(int i,double j)
{
cout<<"int double:";
return (i+j)/2;
}
int main()
{
double x;
int i;
cout<<"Enter value:";
while(!(std::cin>>x>>i))
{
cout<<"Bad input.Please enter a number:";
cin.clear();
while(cin.get()!='\n')
continue;
}
cout<<"average(int,double):"<<average(i,i)<<endl;
return 0;
}


假设输入x=30,i=20;
那么程序结果应该是:average(int,double):int double:25
才对

可是实际运行时却是int double:average(int,double):25

怎么反了啊!!!不信你们试试
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenzhujiayou 2014-03-05
  • 打赏
  • 举报
回复
5 return (i+j)/2; 改成:return (i-j)/2; 19 cout<<"average(int,double):"<<average(i,i)<<endl; 改成:cout<<"average(int,double):"<<average(i,x)<<endl; 输入:1 7.5 结果: Enter value: 1 7.5 int double:average(int, double): 3 (系统ubuntu)
a2471388918 2013-09-02
  • 打赏
  • 举报
回复
引用 楼主 u011595437 的回复:
#include "C9.h"
double average(int i,double j)
{
	cout<<"int double:";
	return (i+j)/2;
}
int main()
{
	double x;
	int i;
	cout<<"Enter value:";
	while(!(std::cin>>x>>i))
	{
		cout<<"Bad input.Please enter a number:";
		cin.clear();
		while(cin.get()!='\n')
			continue;
	}
	cout<<"average(int,double):"<<average(i,i)<<endl;
	return 0;
}
假设输入x=30,i=20; 那么程序结果应该是:average(int,double):int double:25 才对 可是实际运行时却是int double:average(int,double):25 怎么反了啊!!!不信你们试试
是啊,怎么回事,为什么呢
大尾巴猫 2013-08-31
  • 打赏
  • 举报
回复
表达式的顺序 ,类似 (a+b) + (c+d),具体先算a+b还是先算c+d,没有规定。 这里就是先 打印 "average(int,double):” 还是先去求函数的值,不规定,只保证 "average(int,double):” 比函数的值先打印。所以25肯定在后面。
海的神话 2013-08-31
  • 打赏
  • 举报
回复
为什么不应该是int double:average(int,double):输出顺序呢。 看到先调用average()进行计算啊

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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