第一次。 对于func a=4 b=1 m=0 i=2
i+= m+1 i=2+0+1=3
m=i+a+b=3+4+1=8
第一个打印就是8
第二次 a=4 b=1 m=8 i=3
i+= m+1 i=3+8+1=12
m=i+a+b=12+4+1=17
第二个打印为17
选C
38
宏定义带入即可。
S(a+b) = PT*a+b*a+b
=5.5*1+2*1+2
=9.5
选B
#include<stdio.h>int
func(int
a,int
b)
{
int
c
c=a+b
return
c
}
main()
{
int
x=6,y=7,z=8,r//(x--,y++,x+y)为逗号表达式,取最后一项的结果,即x+y==13
r=func((x--,y++,x+y),z--)//因为z--为后减减,所以调用函数相当于调用func(13,8)
printf("%d\n",r)//输出a+b,即13+8
}
题目问的是func中的形参有几个,答案是2没有问题。(a1,a2,a3)这是一个表达式,表达式的值为最后一个逗号后面表达式的值,即a3的值,这是考察逗号运算符的知识点。
同理(a4, a5)表达式值为a5,所以func()调用等价于func(a3, a5),您想想形参有几个,2个没问题的,对吧。