首页 » C语言解惑 » C语言解惑全文在线阅读

《C语言解惑》6.4 函数的返回路径

关灯直达底部

【例6.6】下面函数是否能正确运行?


#include <stdio.h>double max(double,double);int main ( ){      double x, y;      scanf ( "%lf %lf", &x, &y );      max(x,y);      return 0;}double max( double a, double b ){     if (a>b) printf ("max=%lf/n",a);     else printf ("max=%lf/n",b);     return 0;}  

就本程序而论,它能输出正确的结果。因为只使用了函数的输出信息,所以发现不了其不合理之处。函数max始终输出0值,极为不合理。万一调用这个程序的输出结果,就会产生错误,后果可能不堪设想。

正确的设计方式就是输出函数计算的结果,即始终输出最大者。例如:


double max( double a, double b ){    if (a>b) {           printf ("max=%lf/n",a);           return a;    }    else {           printf ("max=%lf/n",b);           return b;    }}  

因为是传值方式,并不会改变主程序的变量值,所以可以使用如下简单编制的max函数实现程序的功能。


double max( double a, double b ){     if (a<b) a=b;     printf ("max=%lf/n",a);     return a;}