尽管 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。
我正在用 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。