清华大学出版社 TSINGHUA UNIVERSITY PRESS main() { float a,b; int c; scanf (%f,%f,"&a,&b); c=max (a,b); printf (Maxis%dn "c); max (floatx,floaty); {float z;/*z为实型变量*/ z=x>y?x:y; 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。 如果将main函数中的c定义为实型,用%f格式符输 出,也是输出2.000000。 有时,可以利用这一特点进行类型转换,如在函数中 进行实型运算,希望返回的是整型量,可让系统去 自动完成类型转换。但这种做法往往使程序
运行情况如下: 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.1程序中, 尽管没有要求printstar和print-messagei函数带回 值,但是如果在程序中出现下面的语句也是合法 的:
不清晰,可读性降低,容易弄错,而且并不是所有 的类型都能互相转换的(如实数与字符类型数据 之间)。因此建议初学者不要采用这种方法,而 应做到使函数类型与return返回值的类型一致。 (4) 如果被调用函数中没有return语句,并不带回一 个确定的、用户所希望得到的函数值,但实际上, 函数并不是不带回值,而只是不带回有用的值, 带回的是一个不确定的值。例如,在例8.1程序中, 尽管没有要求printstar和print-message函数带回 值,但是如果在程序中出现下面的语句也是合法 的:
清华大学出版社 TSINGHUA UNIVERSITY PRESS {inta,b,c; a=printstar () b=print-message () c=printstar () printf (%d,%d,%dn",a,b,c); } 运行时除了得到和例8.1一样的结果外,还可以输出 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 (⑤)为了明确表示“不带回值”,可以用“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类型,则 下面的用法就是错误的: