尽管 return 为 0,为什么函数 return 有两个值?

Why does function return two values despite returning 0?

我正在用 c 语言制作一个计算器,一切正常,除了使用除法命令“/”时除外

当一个数字除以 0 时,它应该打印出“NaN”,然后退出程序。但是输出是:NaN0.0

意味着尽管使用了 return 0 命令,该函数也 return 计算浮点数的值。

我如何使函数只是 returns "NaN"?

float calc(float param1, char operator1, float param2){
#include <math.h>

float result;


switch(operator1){

        case '+':
                result = param1 + param2;
                return result;
break;

        case '-':
                result = param1 - param2;
                return result;
break;

        case '*':
                result = param1 * param2;
                return result;
break;

        case'/':
                if(param2 == 0){printf("NaN"); //Issue here
                return 0;
                }
                else{
        result = param1 / param2;}
        return result;
break;

        case '^':
        result = pow(param1, param2);
        return result;
}

}

 

我需要完整的代码才能 100% 确定,但我认为您正在做的是以下内容:

printf('%lf', calc(0, '/', 0)); 

因此,您正在屏幕上输出执行“calc”命令的结果,即:0

但是,在 return 输入这个 0 值之前,您还要将值“NaN”打印到屏幕上。

所以,通过这样做:

printf('%lf', calc(0, '/', 0)); 

你在告诉计算机:

  • 计算 calc(0, '/', 0) 的结果:它在执行期间打印 NaN
  • 然后,打印结果,即0

这就是您的计算机显示 NaN 0 的原因

该函数不是 returning 两个值。它确实 return 只输出一个,而且还打印 NaN。

要解决此问题,只需删除打印和 return 一个特殊值,该值在您的其余代码中可以理解为 NaN。