问题
单项选择题
有以下程序:
float fun(int x,int y)
return(x+y);
main()
int a=2,b=5,C=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
程序运行后的输出结果是( )。
A.编译出错
B.9
C.21
D.9.0
答案
参考答案:B
解析: fun((int)fun(a+c,b),a-c))是用函数的返回值做实参。第一次调用fun(a+c,b),x+y=a+c+b=2+5+8=15,由于函数fun()的返回值类型被定义为float型,返回值为15.000000,在主函数中被强制转换为int型变为15。第二次调用后fun(15,a-c),x+y=15+a-c =15+2-8=9,返回值为9.000000,输出格式要求小数位为0且数据宽度为3,则输出9。