C ++ позволяет программистам переопределять символы в порядке
#define A 0
, но поведение этих переопределенных символов при использовании в контексте друг друга и с арифметикой необычно из-за того, что эти значенияобрабатываются как строки, а не как литералы.
Я запутался в логике, которую использует эта арифметика, и надеялся получить объяснение того, как она работает.Я провел несколько тестов, пытаясь понять, как это работает, используя разные значения, но это все еще сбивает меня с толку.
пример 1:
#define A 0
#define B A+1
#define C 1-B
cout << C;
пример 2:
#define ALPHA 2-1
#define BETA ALPHA * 2
cout << BETA;
пример 1: ожидаемый результат равен 0, фактический результат равен 2 пример 2: ожидаемый результат равен 2, фактический результат равен 0
Кто-нибудь может объяснить, как именно это работает?