12.下述程序的输出结果是( )。
int fun(int a,int b)
{ int c=a;
if(a>b) c=1;
else if(a==b)
c=0;
else
c=-1;
return c;}
int main( )
{ int i=2,p;
p=fun(i,++i);
printf(“%d\n”,p); return 0;}
A.2 B.1 C.0 D.-1
++i先算,所以fun(i,++i)是fun(3,3)
传参时i先自加了
++ 和 -- 在变量前边会先对变量进行自增或自减,然后再取变量的值。
++ 和 -- 在变量后边会先取变量的值,然后再对变量进行自增或自减。
上边的fun(i,++i),其实等同于fun(2,3)
根据fun函数的逻辑,其返回值应该是 -1,故本题选D
首先传入的参数i,与++i,当i=2时候,++i则为3(++i与i++区别是前者会在执行的时候就会自增 而后者则会执行后自增)