问题 单项选择题

有以下程序:
fun(int x,int y)(return (x+y);)
main()
int a=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);

执行后的输出结果是()。

A.6

B.7

C.8

D.9

答案

参考答案:C

解析: 本题考查的知识点是逗号表达式。因为整个逗号表达式的值为其最右边一个子表达式的值,所以程序中传递给fun()函数的第1个实参(a++,b++,a+b)的值为a+b的值。但是,在计算a+b之前,已经先让a和b各自增1了,所以第1个实参值为(1+1)+(2+1)=5。第2个实参c++的值为变量c自增之前的值3。所以,函数返回的值为5+3=8。故应该选择C) 。

单项选择题 B型题
单项选择题 A1/A2型题