Как заставить функцию возвращать результат нескольких типов переменных в C? - PullRequest
0 голосов
/ 04 октября 2010

Я только начал изучать C из руководства по разработке Cocoa, и мне было интересно, как (если это вообще возможно) я вернул бы результат функции с несколькими типами переменных.Например, у меня есть простая математическая функция, которую я сделал, чтобы практиковать то, что я читаю, и я дал ей несколько типов переменных:

#include <stdio.h>

float doMath (int variable1, float variable2, int variable3, float variable4);

main()
{
    printf ("Math is fun!!\n");

    float theMath = doMath (2, 3.66, 9009, 7.990);
    printf ( "Result = %f\n", theMath );

}

float doMath (variable1, variable2, variable3, variable4) 
{
    return (variable1 * variable2) + (variable3 - variable4);
}

Как правильно использовать несколько типов переменных в одной функции / уравнении?Кроме того, я не уверен, что синтаксис строки возврата также верен ... Я вроде только что сделал удар.

Ответы [ 2 ]

3 голосов
/ 04 октября 2010

Во-первых, вы не помещаете определение функции в функцию main(). Сделай это на улице. И вы можете захотеть поставить int main() вместо основного, а return 0 в конце int main()

Затем просто присвойте переменную с плавающей точкой для хранения результата и верните его.

#include <stdio.h>

float doMath (int variable1, float variable2, int variable3, float variable4);

int main()
{
    printf ("Math is fun!!\n");

    float theMath = doMath (2, 3.66, 9009, 7.990);
    printf ( "Result = %f\n", theMath );

    return 0;
}

float doMath (int variable1, float variable2, int variable3, float variable4) 
{
    float answer = (variable1 * variable2) + (variable3 - variable4);
    return answer;
}
0 голосов
/ 04 октября 2010

Вы не можете вернуть несколько типов. Но вы можете вернуть объединение (или, что еще лучше, структуру, содержащую индикатор типа и объединение).

typedef union {
   int i;
   float f;
} multi;
typedef struct {
   short type;
   multi m;
} multitype;

multitype f(int arg1, ...);

Конечно, тогда вам придется управлять полиморфизмом вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...