Это опасная дорога, чтобы идти вниз.Массив в вашем примере будет преобразован (во время компиляции) в:
int values[] = {75, 42, 5, 45};
Итак, когда вы видите число 42 ... что это?Это символ '*'
или вы действительно имели в виду число 42
?
Вы также не можете полагаться на приведение типов, поскольку все ваши значения будут преобразованы в int
с, посколькухранятся в целочисленном массиве.Лучше всего создать структуру, которая будет содержать как тип, так и значение, например:
typedef struct
{
int type; //0 for int, 1 for operator, and so forth.
int value; //holds either a character code or an integer value
//you could use a union here, if you felt it would make things cleaner...
} Token;
Затем проверить, какой тип токена, - просто посмотреть на token.type
.
Надеюсь, это поможет!
PS: Обманным ответом будет использование языка с динамической типизацией.С вашей стороны гораздо меньше работы, но медленнее, и я не знаю, подходит ли вам этот вариант.