int x,y,n=0; // 這個語句只會初始化n為0,不會初始化x,y為0。
我們提供的服務有:成都網(wǎng)站建設、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、閩侯ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的閩侯網(wǎng)站制作公司
沒被初始化的變量x、y,其值隨機。所以程序執(zhí)行會有問題。
---
至于函數(shù)重載,C語言不支持,C++才支持。
查看codeblocks所用math.h,只有一個名為fabs的函數(shù),即
_CRTIMP double __cdecl fabs (double);
還有一個名為fabsf的函數(shù):
extern float __cdecl fabsf (float x);
因為#include cmath指令包含的是文件math.h,而math.h繼承至C語言,C語言不支持函數(shù)重載,所以fabs不會是重載函數(shù)。
原因:
fabs(k)有點問題。
k是整數(shù),而 fabs()有如下幾種原型:
double fabs ( double x );
float fabs ( float x );
long double fabs ( long double x );
因此編譯器需要將k 轉為double,float和long double中的一種類型,但是有三種可能,所以編譯器不知道你要的是哪一種,所以報“調用不明確”
解決方法:
以下三種調用皆可,其實就是顯式轉換數(shù)據(jù)類型
(int)fabs((double)k);
(int)fabs((float)k);
(int)fabs((long double)k);
c語言寫重載函數(shù):
首先明確重載函數(shù)的定義:在相同的聲明域中的函數(shù)名相同的,而參數(shù)表不同的,即通過函數(shù)的參數(shù)表而唯一標識并且來區(qū)分函數(shù)的一種特殊的函數(shù)。
當將要定義一組函數(shù),使它們執(zhí)行一系列的操作,但是它們是應用在不同的參數(shù)類型上的。此時可以選擇重載函數(shù)。
例如:
上面的三個函數(shù)都可以大概地說成判斷一組數(shù)中的最大值,對于函數(shù)的用戶來說,他們并不關心函數(shù)定義的細節(jié),也就是說他們不關心判斷兩個整數(shù)的大小和判斷數(shù)組(vector容器)數(shù)的大小應該使用不同的函數(shù),而對于程序的設計者來說這可是不得不想到的。程序員必須記住并查找每個函數(shù)名。而函數(shù)的重載把程序員從這種問題的復雜性中解放了出來,C++提供了這種支持。
上面的三個比較大小的函數(shù)可以定義成:
通過參數(shù)就可以一眼分辨不同的函數(shù)。
標準C, 不支持函數(shù)重載。
函數(shù)重載是C++的概念。 不光是類的成員函數(shù), 一般函數(shù)以及模板函數(shù)都是可以重載的。