清华大学出版社 TSINGHUA UNIVERSITY PRESS (3)在定义函数时指定的函数类型一般应该和 return 语句中的表达式类型一致 如果函数值的类型和 return语句中表达式的值不 致,则以函数类型为准。 对数值型数据,可以自动进行类型转换。即函数 类型决定返回值的类型。 (4)对于不带回值的函数,应当用“void”定义函数 为“无类型”(或称“空类型”)。此时在函数体中 不得出现 return语句。 C程序设计(第三版) http://ccf.tsinghua.edu.cn 26
C程序设计(第三版) http://ccf.tsinghua.edu.cn 26 (3)在定义函数时指定的函数类型一般应该和return 语句中的表达式类型一致。 • 如果函数值的类型和return语句中表达式的值不一 致,则以函数类型为准。 • 对数值型数据,可以自动进行类型转换。即函数 类型决定返回值的类型。 (4)对于不带回值的函数,应当用“void”定义函数 为“无类型”(或称“空类型”)。此时在函数体中 不得出现return语句
例8.3返回值类型与函 include <stdio.h> 运行情况如下: void main () 1.5,2.5 i int m a x( float x, Max is 2 float a, b Int c scanf "%f, %f,, &a, b) c=m a x ( a, b): printf ( "M a x i s %dn C int max( float x, float y t float z /*z为实型变量* z=x>y? X y: return(z) C程序设计(第三版) http://ccf.tsinghuaedu.cn
C程序设计(第三版) http://ccf.tsinghua.edu.cn 27 例 8.3 返回值类型与函数类型不同 # include <stdio.h> void main() { int max(float x,float y); float a,b; int c; scanf("%f,%f,",&a,&b); c=max(a,b); printf("Max is %d\n",c); } int max(float x,float y) { float z; /* z为实型变量 */ z=x>y?x∶y; return(z); } 运行情况如下: 1.5, 2.5↙ Max is 2
清华大学出版社 TSINGHUA UNIVERSITY PRESS 8.4函数的调用 8.4.1函数调用的一般形式 函数调用的一般形式为:函数名(实参表列) 说明: (1)如果是调用无参函数,则“实参表列”可 以没有,但括弧不能省略 C程序设计(第三版) http://ccf.tsinghua.edu.cn 28
C程序设计(第三版) http://ccf.tsinghua.edu.cn 28 8.4 函数的调用 8.4.1 函数调用的一般形式 函数调用的一般形式为: 函数名(实参表列) 说明: (1)如果是调用无参函数,则“实参表列”可 以没有,但括弧不能省略
清华大学出版社 TSINGHUA UNIVERSITY PRESS (2)如果实参表列包含多个实参,则各 参数间用逗号隔开。实参与形参的个数 应相等,类型应匹配。实参与形参按顺 序对应, 传递数据 (3)如果实参表列包括多个实参,对实参 求值的顺序并不是确定的,有的系统按自 左至右顺序求实参的值,有的系统则按自 右至左顺序。 C程序设计(第三版) http://ccf.tsinghua.edu.cn 29
C程序设计(第三版) http://ccf.tsinghua.edu.cn 29 (3)如果实参表列包括多个实参,对实参 求值的顺序并不是确定的,有的系统按自 左至右顺序求实参的值,有的系统则按自 右至左顺序。 (2)如果实参表列包含多个实参,则各 参数间用逗号隔开。实参与形参的个数 应相等,类型应匹配。实参与形参按顺 序对应,一一传递数据
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例8.4实参求值的顺序 #include <stdio. h> void mainO int f(int a, int b);/函数声明* Int 1=2, p: p=f(i++1;/函数调用* printf("%od\"p C程序设计(第三版) http://ccf.tsinghua.edu.cn 30
C程序设计(第三版) http://ccf.tsinghua.edu.cn 30 例 8.4 实参求值的顺序 #include <stdio.h> void main() { int f(int a,int b); /* 函数声明 */ int i=2,p; p=f(i,++i); /* 函数调用 */ printf("%d\n",p); }