与功能调用混乱

Confusion with function calls

本文关键字:混乱 调用 功能      更新时间:2023-10-16

为什么此功能调用工作?该函数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);

}

它隐式将doubles转换为ints。您会注意到func(12.3,34.3);将它们打印为12和34。当您调用函数时,编译器查找具有最佳匹配签名的功能。在这种情况下,它找到了void func(int, int)并这样称呼,因为它可以进行隐式转换。

为什么此功能调用工作?

看隐式转换。当将值复制到兼容类型时,它们会自动执行,而intdouble为(12.3和34.3是双打,而不是Floats(。然后,丢失了十进制数字,只有整体零件将被打印。