重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int x,y,n=0; // 这个语句只会初始化n为0,不会初始化x,y为0。
我们提供的服务有:成都网站建设、做网站、微信公众号开发、网站优化、网站认证、闽侯ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的闽侯网站制作公司
没被初始化的变量x、y,其值随机。所以程序执行会有问题。
---
至于函数重载,C语言不支持,C++才支持。
查看codeblocks所用math.h,只有一个名为fabs的函数,即
_CRTIMP double __cdecl fabs (double);
还有一个名为fabsf的函数:
extern float __cdecl fabsf (float x);
因为#include cmath指令包含的是文件math.h,而math.h继承至C语言,C语言不支持函数重载,所以fabs不会是重载函数。
原因:
fabs(k)有点问题。
k是整数,而 fabs()有如下几种原型:
double fabs ( double x );
float fabs ( float x );
long double fabs ( long double x );
因此编译器需要将k 转为double,float和long double中的一种类型,但是有三种可能,所以编译器不知道你要的是哪一种,所以报“调用不明确”
解决方法:
以下三种调用皆可,其实就是显式转换数据类型
(int)fabs((double)k);
(int)fabs((float)k);
(int)fabs((long double)k);
c语言写重载函数:
首先明确重载函数的定义:在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。
当将要定义一组函数,使它们执行一系列的操作,但是它们是应用在不同的参数类型上的。此时可以选择重载函数。
例如:
上面的三个函数都可以大概地说成判断一组数中的最大值,对于函数的用户来说,他们并不关心函数定义的细节,也就是说他们不关心判断两个整数的大小和判断数组(vector容器)数的大小应该使用不同的函数,而对于程序的设计者来说这可是不得不想到的。程序员必须记住并查找每个函数名。而函数的重载把程序员从这种问题的复杂性中解放了出来,C++提供了这种支持。
上面的三个比较大小的函数可以定义成:
通过参数就可以一眼分辨不同的函数。
标准C, 不支持函数重载。
函数重载是C++的概念。 不光是类的成员函数, 一般函数以及模板函数都是可以重载的。