清华大学出版社 TSINGHUA UNIVERSITY PRESS main O float a, b: int c: scanf ( n%f, %f, " &a,&b) c=max (a, b) printf ("Maxis %d\n",c); max(float x, float y) { float z;/z为实型变量* z =x>y? x: return ( Z
main() { float a,b; int c; scanf("%f,%f,",&a,&b); c=max(a,b); printf("Maxis%d\n",c); } max(float x,float y); {float z;/* z为实型变量 */ z=x>y?x∶y; return(z); }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 运行情况如下: 1.5,2.5 Max is 2 函数max定义为整型,而 return语句中的z为实型, 二者不一致,按上述规定,先将z转换为整型,然 后max(x,y)带回一个整型值2回主调函数main 如果将mai函数中的c定义为实型,用%f格式符输 出,也是输出2.00000 有时,可以利用这一特点进行类型转换,如在函数中 进行实型运算,希望返回的是整型量,可让系统去 自动完成类型转换。但这种做法往往使程序
运行情况如下: 1.5, 2.5 Max is 2 函数max定义为整型,而return语句中的z为实型, 二者不一致,按上述规定,先将z转换为整型,然 后max(x,y)带回一个整型值2回主调函数main。 如果将main函数中的c定义为实型,用%f格式符输 出,也是输出2.000000。 有时,可以利用这一特点进行类型转换,如在函数中 进行实型运算,希望返回的是整型量,可让系统去 自动完成类型转换。但这种做法往往使程序
清华大学出版社 TSINGHUA UNIVERSITY PRESS 不清晰,可读性降低,容易弄错,而且并不是所有 的类型都能互相转换的(如实数与字符类型数据 之间)。因此建议初学者不要采用这种方法,而 应做到使函数类型与 return返回值的类型一致。 (4)如果被调用函数中没有 return语句,并不带回 个确定的、用户所希望得到的函数值,但实际上, 函数并不是不带回值,而只是不带回有用的值, 带回的是一个不确定的值。例如,在例8.程序中 尽管没有要求 printstar和 print-message函数带 值,但是如果在程序中出现下面的语句也是合法 的
不清晰,可读性降低,容易弄错,而且并不是所有 的类型都能互相转换的(如实数与字符类型数据 之间)。因此建议初学者不要采用这种方法,而 应做到使函数类型与return返回值的类型一致。 (4) 如果被调用函数中没有return语句,并不带回一 个确定的、用户所希望得到的函数值,但实际上, 函数并不是不带回值,而只是不带回有用的值, 带回的是一个不确定的值。例如,在例8.1程序中, 尽管没有要求printstar和print-message函数带回 值,但是如果在程序中出现下面的语句也是合法 的:
清华大学出版社 TSINGHUA UNIVERSITY PRESS lint a, b, c: a=printstar ()i b=print-message ( c=printstar () printf "%d, %d, %d\n", a,b,c) 运行时除了得到和例81一样的结果外,还可以输出 a、b、c的值(今为21、20、21)。a、b、c的值 不一定有实际意义(今 printstar函数输出21个字符, 返回值为21, print- message输出20个字符,返回 值为20)
{int a,b,c; a=printstar(); b=print-message(); c=printstar(); printf("%d,%d,%d\n",a,b,c); } 运行时除了得到和例8.1一样的结果外,还可以输出 a、b、c的值(今为21、20、21)。a、b、c的值 不一定有实际意义(今printstar函数输出21个字符, 返回值为21,print-message输出20个字符,返回 值为20)
清华大学出版社 TSINGHUA UNIVERSITY PRESS (5)为了明确表示“不带回值”,可以用“void”定义 “无类型”(或称“空类型”)。例如,例8.1中 的定义可以改为 void printstar void print-message ( 这样,系统就保证不使函数带回任何值,即禁止在 调用函数中使用被调用函数的返回值。如果已将 printstar和 print-message函数定义为void类型,则 下面的用法就是错误的:
(5) 为了明确表示“不带回值”,可以用“void”定义 “无类型”(或称“空类型”)。例如,例8.1中 的定义可以改为 void printstar() {…} void print-message() { …} 这样,系统就保证不使函数带回任何值,即禁止在 调用函数中使用被调用函数的返回值。如果已将 printstar和print-message函数定义为void类型,则 下面的用法就是错误的: