例函数返回值类型转换 maino i float a, b Int c scanf(%f, %f, &a, &b) c-max(a printf("Max is %,c) max(float x, float y) i float z ZXy!xy return (z)
例 函数返回值类型转换 main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(float x, float y) { float z; z=x>y?x:y; return(z); }
§5.2函数的调用 5.2.1调用形式:函数名(实参表) 函数语旬:函数调用可单独成为一个语句 例 output; printf(" Hello, World! \n 函数表达式:调用函数后的返回值可参加表达式的计 算,这时要求被调函数带返回值。 sum=add(a, b) c=fac(n)/(fac(k)*fac(n-k) 今函数参数:带返回值的函数调用亦可作为其它函数的 参数(实际参数) B printf(" %od, max(a, b)) m=max(a, max(b, c))
§5.2 函数的调用 5.2.1 调用形式: 函数名(实参表) 函数语句:函数调用可单独成为一个语句 例 output(); ; printf(“Hello,World!\n”); ❖函数表达式: 调用函数后的返回值可参加表达式的计 算,这时要求被调函数带返回值。 例 sum=add(a,b); c=fac(n)/(fac(k)*fac(n-k)) ; ❖函数参数:带返回值的函数调用亦可作为其它函数的 参数(实际参数) 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));
★调用方式 今函数语旬:函数调用可单独成为一个语句 例 output printf(" hello, World!n) 今函数表达式:调用函数后的返回值可参加表达式的计 算,这时要求被调函数带返回值。 sum=add(a, b) c=fac(n)/(fac(k)*fac(n-k)) 今函数参数:带返回值的函数调用亦可作为其它函数的 参数(实际参数) 例 printf(%od,max(ab) m=max(a, max(b, c)
调用方式 ❖函数语句:函数调用可单独成为一个语句 例 output(); ; printf(“Hello,World!\n”); ❖函数表达式: 调用函数后的返回值可参加表达式的计 算,这时要求被调函数带返回值。 例 sum=add(a,b); c=fac(n)/(fac(k)*fac(n-k)) ; ❖函数参数:带返回值的函数调用亦可作为其它函数的 参数(实际参数) 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));
调用函数的过程是: ①为函数的所有形参分配内存单元 ②计算各个实参表达式的值,一一对应的赋值给相应形参 (若是无参函数,上述过程不执行)。 ③进入函数体,执行函数中的语句,实现函数的功能 ④执行到 return语句时,计算 return语句中表达式的值(若 是无返回值函数,本项不做),返回到主调函数 ⑤释放形参及本函数内的局部变量所占内存,继续执行主 调函数中的后继语句 说明 实参与形参个数相等,类型一致,按顺序一一对应 形参与实参的结合顺序,因系统而定( Turbo c自右 向左)
调用函数的过程是: ① 为函数的所有形参分配内存单元。 ②计算各个实参表达式的值,一一对应的赋值给相应形参 (若是无参函数,上述过程不执行)。 ③ 进入函数体,执行函数中的语句,实现函数的功能。 ④执行到return语句时,计算return语句中表达式的值(若 是无返回值函数,本项不做),返回到主调函数。 ⑤ 释放形参及本函数内的局部变量所占内存, 继续执行主 调函数中的后继语句。 说明: ⚫实参与形参个数相等,类型一致,按顺序一一对应 ⚫形参与实参的结合顺序,因系统而定(Turbo C 自右 向左)
例参数求值顺序 main( main( i int i-=2, p 〔inti=2,p; p=fi,+1) + printf("%od"p) printf("od",p) int f(int a, int b) int f(int a, int i int c i int c if(ab)c=1 f(ab)c=l else if(a==b)C=0 else ifa==b)c=0 else c=. return(c) return(c) 运行结果:0 运行结果:1
main() { int i=2,p; p=f(i,++i); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 例 参数求值顺序 main() { int i=2,p; p=f(i, i++); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 运行结果:0 运行结果:1