在函数中返回三个 int 中的最小值不返回任何内容

Posted

技术标签:

【中文标题】在函数中返回三个 int 中的最小值不返回任何内容【英文标题】:return the minimum of three int's in function doesn't return anything 【发布时间】:2021-05-03 11:28:39 【问题描述】:

我想像这样返回三个给定数字中的最小值。

我不知道为什么它没有返回任何东西


#include <stdio.h>

int minimum3(int un, int deux , int trois)

  int minimum;
    if (un<deux && un <trois)
        minimum= un;
    else if (deux<trois && deux<un)
        minimum= deux;
    else if (trois<deux && trois<un )
        minimum= trois;
  return minimum;


int main(void) 
  minimum3(4,88,8999);
  return 0;

【问题讨论】:

你不使用返回的内容... 它返回一些东西。返回的东西被忽略。 如果两个值相同会怎样?这不是确定最小值的最佳算法。 你为什么认为“它没有返回任何东西”?你是怎么检查的? 【参考方案1】:

正如其他人在 cmets 中提到的,您忽略了返回的值,对此的快速解决方法是:

int main(void) 
  int min = minimum3(4,88,8999);

  printf("min: %d\n",min);

  return 0;

尽管如此,您的算法并不是那么有效,正如乔纳森所说,如果您处理的数字中有 2 个相等,则无法计算最小值。更好的是,imo,将有另一个函数来计算 2 个数字的最小值,然后使用它与第三个数字进行比较。这样干净多了。

#include <stdio.h>

int min2(int a,int b)

    return ((a <= b) ? a : b);


int min3(int a,int b,int c)

    int mintmp = 0;

    mintmp = min2(a,b);

    return ((mintmp  <= min2(mintmp,c)) ? mintmp : min2(mintmp,c));


int main(void)

    printf("%d\n",min2(5,10));

    printf("%d\n",min3(5,-1,1));

    return 0;

您当然可以将conditional expressions 替换为更简单的if else

【讨论】:

以上是关于在函数中返回三个 int 中的最小值不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

OrderedDictionary 值不返回列表而是返回对象 [重复]

核心数据打开文件脏,缺失值不一致,fetch返回空数组

C++返回的数组值不正确

Python调用C的SDK出现返回值不符合预期以及Segmentation fault

C语言如何求一个整数的各个位数之和

python编写程序,利用元组作为函数的返回值,求系列类型的最大值、最小值和元素个数