问题 单项选择题

有以下程序:
#include<stdio.h>
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)。

问答题
多项选择题