18. 有以下函数定义: int fun(,double a ,double b) { return a*b; }

问题描述:

18. 有以下函数定义: int fun(,double a ,double b) { return a*b; }
18. 有以下函数定义:
intfun(,double a ,double b)
{ return a*b;
} 若以下选项中所用变量都以正确定义并赋值,错误的函数调用时( )
A. if(fun(x,y)){.} B.z=fun(fun(x,y),fun(x,y));
C.z=fun(fun(x,y)*x,y) ;D.fun(x,y);
答案是D,为什么?
24 .下列程序的输出结果是()
#include"stdio.h"
#define SUB(X,Y)(X)* Y
main( )
{int a=3,b=4;
printf ("%d\n",SUB(a++,b++));}
A.12B.15 C.16 D. 20 答案为A,是怎么算的?
25.下列程序的输出结果是()
#include"stdio.h"
int fun(int x,int y)
{static int m=0,i=2;
i+=m+1;
m=i+x+y;
return m;}
main( )
{int j=4,m=1,k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
答案为8和17,不知道17是怎么算出来的?

首先说18题,这个函数是由返回值的,所以只有D不是赋值操作.24题:因为最后一句:printf("%d/N",SUB(a++,b++));中的SUB不是函数而是预编译.它使SUB(a++,B++)在编译时变为:(a++)*b++,.所以这时的就是:3*45=1225题:fun...你好,非常感谢你的帮助!但还有几点想请教一下你:18. 你说这个函数是有返回值的,只有D不是赋值操作?是什么意思还是不明白,题目中问的是错误的函数调用,你是说函数调用后要将返回值赋给一个变量才算正确的调用?24.因为最后一句:printf("%d/N",SUB(a++,b++));中的SUB不是函数而是预编译。它使SUB(a++,B++)在编译时变为:(a++)*b++,。所以这时的就是:3*45=12, 这个5是怎么来的?不好意思,首先24题那个5我打错了。多打上的。18题中因为只有D没有赋值,并且返回值还是整形,要设计到数据转换,程序运行应该没问题,但在正规语法上是错误的。