2

関数を作成しましたが、次の例のような単一の戻り値ではなく、2 つの戻り値を取得したいと考えています。

long Conv(double num){      
    long a,b;
    a = floor(num);
    b = num * pow(10,6) - a * pow(10,6);

    return a;
    return b;
} 

関数を呼び出すと

long a = Conv(30.233456);

問題は、どのように取得するのbですか?

4

3 に答える 3

4

一度に2回戻ることはできません。

参照によってbを関数に渡すことができます。

yourfunction( long a , long* b )
{    
    *b = a + 10;
    //more code

return a;
}

a = yourfunction(a , &b );
于 2013-03-14T17:15:14.613 に答える
3

C の関数から複数の値を返すことはできません。 を返すか、関数内structで参照渡しして変更します。

例 1:struct

struct ab {
  long a;
  long b;
}

struct ab Conv(double num) {
  struct ab ab_instance;

  ab_instance.a = floor(num);
  ab_instance.b = num * pow(10,6) - a * pow(10,6);

  return ab_instance;
}

例 2:pass b by reference

long Conv(double num, long& b) {
  long a;
  a = floor(num);
  b = num * pow(10,6) - a * pow(10,6);

  return a;
}
于 2013-03-14T17:16:14.590 に答える
1

アーミンはそれに答えましたが、サンプルコードは次のとおりです。

int get_both(int* b) {
    a = 0;
    *b = 1;
    return a;
}
于 2013-03-14T17:17:16.863 に答える