为什么这个函数调用有效?
函数func(int,int)
被声明为取整数,但即使用double调用它也是有效的。为什么会这样?
#include<iostream>
using namespace std;
void func(int a,int b){
cout<<"a is "<<a;
cout<<"\nb is "<<b;
}
int main(){
func(12.3,34.3);
}
答案 0 :(得分:6)
隐式将doubles
转换为ints
。您会注意到func(12.3,34.3);
将它们打印为12和34.当您调用函数时,编译器会查找具有最佳匹配签名的函数来调用。在这种情况下,它找到void func(int, int)
并调用它,因为它可以进行隐式转换。
答案 1 :(得分:1)
为什么这个函数调用有效?
了解implicit conversions。将值复制到兼容类型时会自动执行它们,int
和double
是(12.3和34.3是双精度数,而不是浮点数)。然后,十进制数字丢失,只打印整数部分。