#include <stdio.h>
enum Math
{
ADD = '+',
SUB = '-',
MUL = '*',
};
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int mul(int a, int b)
{
return a * b;
}
int (*function(enum Math mt))(int, int)
{
switch (mt)
{
case ADD:
return &add;
case SUB:
return ⊂
case MUL:
return &mul;
default:
return NULL;
}
}
int main(void)
{
int (*fp)(int, int);
fp = function(ADD);
int a = 13, b = 5;
int result = (*fp)(a, b);
printf("%d + %d = %d\n", a, b, result);
fp = function(MUL);
result = (*fp)(a, b);
printf("%d * %d = %d\n", a, b, result);
return 0;
}
/*
run:
13 + 5 = 18
13 * 5 = 65
*/