请帮忙解答一道C++题目

来源:百度知道 编辑:UC知道 时间:2024/09/23 12:34:34
以下是变量和函数说明:
#include<iostream.h>

char ch='*';
double mul(int x, int y, char ch, int *z)
{
switch(ch)
{
case'+':*z=x+y;break;
case'-':*z=x-y;break;
case'*':*z=x*y;break;
case'/':*z=x/y;break;
return *z;
}
}
下面合法的函数调用语句是()
A,mul(11,14,ch,y);
B,mul(a,b,%x,ch);
C,mul(3.14+2,3*12,'*',&z);
D,mul(sub(21,45,'+',&y),sub(2,5,'+',&x),'1',&y);
尽量每个选项都解释一下,谢谢。
这道题给的答案是C。为什么呢?

A,mul(11,14,ch,y); //y不是地址
B,mul(a,b,%x,ch); //ch不是地址
C,mul(3.14+2,3*12,'*',&z); //3.14+2为实型,调用时会造成数据强制类型转换
D,mul(sub(21,45,'+',&y),sub(2,5,'+',&x),'1',&y);
D对!

a