网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月30日
漏签
0
天
c++吧
关注:
591,192
贴子:
2,105,265
看贴
图片
吧主推荐
游戏
9
回复贴,共
1
页
<<返回c++吧
>0< 加载中...
函数重载,小弟有个小问题各位大神!!!错在哪里啊?
只看楼主
收藏
回复
Honker_C
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
#include <iostream>
using namespace std;
int aa(int x);
float aa(float y);
void main()
{
cout<<aa(3.5)<<endl;
}
int aa(int x)
{
if (x<0)
return x * (-1);
return x;
}
float aa(float y)
{
if (y<0.0)
return y * ( -1.0);
return y;
}
函数重载,什么原因?
LH_Mouse_Ex
<<
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
cout<<aa(3.5)<<endl; -> cout<<aa((float)3.5)<<endl;
LH_Mouse_Ex
<<
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先,3.5是double,你这个没有完全匹配的函数。
编译器试图进行转换,但是double到float和int都能转换而且是【有损的】。它就不知道怎么办了。
反过来,如果你生命了一个int和一个double,但是拿float作参数,就不会有问题。因为float到double是无损的,float到int是有损的。
Honker_C
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哦,但是为什么3.5就是 double就不能是float型呢?
EAgleLeo
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
其实我想问是不是c++已经不允许3.5f这样的表示了。。。
Honker_C
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哦,对哈。
C用习惯了。
3.5f 表示float型
3.5l 表示double型
是不是默认情况下,若省略了后面的f或l ,就表示double型啊?
LH_Mouse_Ex
<<
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
允许
Honker_C
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
是不是默认情况下,若省略了后面的f或l ,就表示double型啊?
LH_Mouse_Ex
<<
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我只能说我遇到的是这样的。我个人是十分反对这种写法的,乱用简称不仅难记而且还容易混淆。
(float)2.5多直白,而且容易理解
Honker_C
throw
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哦,知道了,谢谢。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示