问题
单项选择题
有以下程序
int fun1 (double a){return a*=a;}
int fun2 (double x,double y)
{ double a=0,b=0;
a=fun1(x);b=fun1(y); return(int)(a+b);
}
main()
{double w;w=fun2(1.1,2.0);......}
程序执行后变量W中的值是()。
A.5.21
B.5
C.5.0
D.0.0
答案
参考答案:C
解析:
评析:此题考核的是数值类型的定义与强制转换。本题在进行调用函数fun2()时,又对函数fun1()进行了调用,由于函数 fun1()定义为整型,所以第一次调用fun1()时返回的值为1,然后再将1赋值给a,此时由于a为double型,则系统自动类型转换,将1转换成了1.000000赋值给了变量a,以此类推,得b的值为4.000000,然后诵过“return(int)(a+b);”将a+b的值强制转换为int型5返回给主函数,此时又由w的类型为double,所以返回的整型值5又被转换为double型。故输出结果为5.0。