#define max 10+2
Это препроцессор. это не умно.
это глупо.
он просто заменяет текст.
max*max
разрешит до
10+2*10+2
что составляет
10+(2*10)+2
из-за приоритета оператора, который
10 + 20 + 2
т.е. 32
Кроме того, вам следует избегать макросов препроцессора, когда это возможно, и использовать static const
вместо . Вы можете или не можете также рассмотреть возможность использования const
переменной или enum
вместо #define
; у каждого есть свои компромиссы, обратитесь к аналогичному вопросу: "static const" vs "#define" vs "enum" .
Если вы хотите придерживаться препроцессора, то вы можете просто использовать:
#define max (10+2)
Поскольку код в скобках будет иметь приоритет оператора.