簡體   English   中英

返回 function 中三個 int 的最小值不返回任何內容

[英]return the minimum of three int's in function doesn't return anything

我想像這樣返回三個給定數字中的最小值。

我不知道為什么它不返回任何東西


#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;
}

正如評論中提到的其他人一樣,您忽略了返回的值,對此的快速解決方法是:

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

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

  return 0;
}

盡管如此,正如喬納森所說,您的算法並不是那么有效,如果您處理的數字中有 2 個相等,則無法計算最小值。 更好的是,imo,將有另一個 function 計算 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;
}

您當然可以用更簡單的if else替換conditional expressions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM