2010-10-04 5 views
0

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

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

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

ответ

3

Во-первых, вы не ставите определение функции внутри функции 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

Ya, часть моей оригинальной функции была опечаткой ... Спасибо за быстрый ответ – MBguitarburst

0

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

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

multitype f(int arg1, ...); 

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

Смежные вопросы