| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1094 人关注过本帖
标题:这个程序是哪里错了?
只看楼主 加入收藏
kyozy
Rank: 1
等 级:新手上路
帖 子:14
专家分:8
注 册:2009-4-5
收藏
得分:0 
学习了
2009-09-26 10:31
haitao9999
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2006-4-10
收藏
得分:0 
是第3个参数类型不明确的问题
主要是调用中的第3个参数类型不明确使函数调用产生了二义性。系统不知道是该使用int类型转换后调用第一个函数还是调用第2个函数。如果在程序调用中将第3个参数先赋值给一个变量如float  f = 3.2.则调用就很明确啦。如下在MinGW下运行良好。
#include <iostream>
using namespace std;

int test(int,int,int);
float test(int,int,float=3.5F);
int main()
{
    float f  = 3.2;
    test(1,2,f);
}
int test(int x,int y,int z)
{cout<<"调用的是第一个函数。"<<endl;
return 1;}
float test(int x,int y,float z)
{cout<<"调用的是第二个函数。"<<endl;
return 1.0;}
2009-09-26 13:15
Chost
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2009-9-21
收藏
得分:0 
回复 5楼 kqscy1
那为什么输出调用的是“调用的第二个函数”?
2009-09-26 22:24
逆光
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2009-9-7
收藏
得分:0 
调用时产生了歧义,应该将test(1,2,3.2)改为test(1,2,3.2f)指明3.2是浮点型才不会有歧义
2009-10-04 12:28
Chost
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2009-9-21
收藏
得分:0 
回复 3楼 hoho568
应该是double(int,int,double=3.5)
2009-10-04 19:53
快速回复:这个程序是哪里错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024033 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved