【问题标题】:Why does function return two values despite returning 0? [duplicate]为什么函数返回 0 却返回两个值? [复制]
【发布时间】:2021-12-30 23:20:13
【问题描述】:

我正在用 c 做一个计算器,除了使用除法命令“/”之外,一切正常

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

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

如何使函数只返回“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;
}

}

 

【问题讨论】:

  • 你绝对不应该有一个#includeinside你的函数。
  • 也就是说,您的代码显示NaN,然后显示0.0,因为您显示NaN,然后将0.0返回到调用代码,它会显示该代码。

标签: c function output


【解决方案1】:

我需要完整的代码才能 100% 确定,但我认为您正在做的事情如下:

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

所以,你在屏幕上输出“calc”命令的执行结果,这里是:0

但是,在返回这个 0 值之前,您还将值“NaN”打印到屏幕上。

所以,通过这样做:

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

你是在告诉计算机:

  • 计算 calc(0, '/', 0) 的结果:在执行过程中打印 NaN
  • 然后,打印结果,即 0

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

函数没有返回两个值。它确实只返回一个,而且还打印 NaN。

要解决这个问题,只需删除打印并返回一个特殊值,在其余代码中可以理解为 NaN。

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2023-02-11
    • 2018-04-28
    • 2017-02-11
    相关资源
    最近更新 更多