有关函数参数的标准转换

R9R9R9 2005-06-05 11:10:15
void mac(long)
{
cout<<"long"<<endl;
}
void mac(float)
{
cout<<"float"<<endl;
}


void main()
{
mac(3.14F);
mac(3.14L);//为什么不能用这个

}
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
玄豹 2005-06-05
  • 打赏
  • 举报
回复
mac(3.14L)找不到精确或最接近的匹配函数。
请看一下C++函数重载那一章节就知道了
「已注销」 2005-06-05
  • 打赏
  • 举报
回复
#include <iostream.h>

void mac(long)
{
cout<<"long"<<endl;
}
void mac(float)
{
cout<<"float"<<endl;
}

void mac(int)
{
cout<<"int"<<endl;
}

void main()
{
mac(3.14F);
mac(3L);//用这个就可以了。。虽然还有一个调用int类型的
mac(3);
//mac(3.14L); //这个就不可以了。。
}
「已注销」 2005-06-05
  • 打赏
  • 举报
回复
long Type
long (or long int) is an integral type that is larger than or equal to the size of type int.
。。。long类似于int。。而3。14本来不是一个long。。而3。14L仅仅是提示这是一个Long类型。。而没有进行强制转换。。加入这个数是与long匹配。。就优先作为long。。如果不是。。象上面一样。。3。14就要进行自动转换。。但是他不知转为那一个类型好。。所以就出错了。。
allen_zhaozhencn 2005-06-05
  • 打赏
  • 举报
回复
调用不明确的重载函数.
「已注销」 2005-06-05
  • 打赏
  • 举报
回复
ambiguous call to overloaded function

64,636

社区成员

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

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