views:

75

answers:

2

Just started learning C from Cocoa developing guide and I was wondering how (if at all possible) I would return the result of a function with multiple variable types. For example, I have a simple math function that I made to practice what I am reading and I gave it multiple variable types:

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

How would I utilize multiple variable types properly in a single function/equation? Also, I'm not sure the syntax of the return line is correct either...I sort of just took a stab at it.

+3  A: 

First, you don't put the function definition inside the main() function. Do it outside. And you might want to put int main() instead of just main, and return 0 at the end of int main()

Then just assign a float variable to hold the result and return it.

#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;
}
Ruel
Ya, part of my original function was a typo...Thanks for the swift response
MBguitarburst
A: 

You can not return multiple types. But you can return a union (or perhaps better still a structure containing a type indicator and a union).

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

multitype f(int arg1, ...);

Of course, then you have to manage the polymorphism by hand.

dmckee