结果: 55
1.func((x- - ,y++,x+y),z - - ); 两个参数.
第一个参数((x- - ,y++,x+y)为逗号表达式,最后一个表达式x+y 为逗号表达式的值.
第二个参数z - -
2.所以func((x- - ,y++,x+y),z - - ); 等价func(13,8)此时r=func((x- - ,y++,x+y),z - - );变量r为21
3.r+=func(x,y);--->r=r+func(x,y); --->r=21+34=55
4.由于c为静态变量,所以c+=a+b; --->c=c+(a+b)---->c=21+13=34
(x--,y++,x+y)是逗号表达式,它的值是第一个表达式。
所以func((x- - ,y++,x+y),z - - );
func()
的参数是x--,z--
明白这个就可以了。。。
希望能够有用。
严重怀疑LS的听课不认真,逗号表达式的值是最后一个表达式的值,(x-- ,y++,x+y)等价于x+y,所以func((x-- ,y++,x+y),z--);等价于func((x+y),z--);
fun(x+y,z);
x--;y++;z--;
应该是这样的
(x- - ,y++,x+y)这是逗号表达式
(
第一个参数((x- - ,y++,x+y)为逗号表达式,最后一个表达式x+y 为逗号表达式的值.
前面的x--和Y++虽然不作为逗号表达式的值,但也会执行,这样X和Y的值会发生变化。
func((x- - ,y++,x+y),z - - )这个函数执行完以后,X=5,Y=8,
func(13,8), Z=7。
照这样想,就可以解决了。答案应该选A吧!
(x--,y++,x+y)是逗号表达式!要x+y的值!
答案应该是55!