Ничего не встроено.
Оператор case будет несколько более коротким, чем логика if / else, но не если вы включите операторы break.
Другой вариант будетфункциональная карта.В C ++ что-то вроде (обратите внимание, что это некомпилированный мысленный код):
typedef int (*binop)(int a,int b);
std::map<char, binop> operations
{ { '+', [](int a, int b)->int { return a+b;} },
{ '-', [](int a, int b)->int { return a-b;} }
};
...
auto op = operations[c[i]];
if (op) return op(a,b);
... or the more devilish:
operations.insert(c[i], [](int a, int b)->int { throw NoOpException();}).first(a,b);
Но реализовать карту и заполнить ее в C и объявить все маленькие рабочие функции было бы так много раздувающего кода!