C++ 傳參double和float問(wèn)題
????C++的小數(shù)在默認(rèn)的情況下都是double類型,但是在使用的時(shí)候,會(huì)根據(jù)情況,自動(dòng)的轉(zhuǎn)為int,(當(dāng)然int也會(huì)根據(jù)情況自動(dòng)轉(zhuǎn)為float或者是double)。
所以下面這一段的代碼可以正常運(yùn)行。int參數(shù)和double類型都會(huì)在調(diào)用函數(shù)的時(shí)候轉(zhuǎn)為float。
但是如果我們添加再添加一個(gè)參數(shù)為int類型的函數(shù),main函數(shù)中還是上面的函數(shù),這時(shí)候就發(fā)現(xiàn)報(bào)錯(cuò)了?。?!
這時(shí)候報(bào)錯(cuò)為:[Error] call of overloaded 'test(double, double)' is ambiguous
test的重載出現(xiàn)了不明確,原因是傳參為double類型,在使用的時(shí)候會(huì)轉(zhuǎn)為int或者為float類型,而二者轉(zhuǎn)換是同級(jí)的,于是這時(shí)候轉(zhuǎn)換就出現(xiàn)了二義性。
所以只需要再數(shù)字后加上f,則表明這是一個(gè)浮點(diǎn)。這個(gè)時(shí)候就不會(huì)出現(xiàn)問(wèn)題了
標(biāo)簽: