考虑函数原型int fun1(float x,char y="$",int a=9,char b="@"),下面的函数调用中,属于不合法调用的是( )
A、
fun1(3.14)
B、
fun1(3.14,"#")
C、
fun1(3.14,"$","@")
D、
fun1(3.14,"#",7,"@")
【正确答案】:C
【题目解析】:
在C++语言中,可以在声明函数时为形参指定默认值。当调用有默认参数值的函数时,调用语句中可以不给出对应的实参,这就相当于调用该函数时以默认值作为参数。
调用函数时,主调函数的实参与被调函数的形参按从左至右的顺序进行匹配对应。
C选项中,实参的个数是3少于形参的个数4,故函数原型形参表中最前面的3个形参与3个实参相对应,即把字符型实参@赋值给int型形参a,会产生编译错误。选C。
同理,ABD是正确的。