Это будет зависеть от языка и компилятора, извините. Но если просто использовать концепцию, что литерал является своего рода токеном, то нет, результатом является константа времени компиляции, а не токен.
В C / C ++ 2 * 7 будет оптимизирован компилятором длясоздайте новую константу, но на самом деле она юридически не определена как литерал, хотя ее можно рассматривать как константу времени компиляции.
Конкатенация "hello" "world"
(примечание без плюса) фактически описывается как шаг предварительной обработкив c ++ генерируется новая строка литеральных констант, но в оригинальном C это не сработало.
Но обратите внимание, что в C макрос обрабатывает фразу параметра 2+7
как отдельные токены, и#define STUPIDMUL3(val) 3 * val
для 2+7
даст ответ 13, а не 18. Если бы вы могли найти способ заставить макросы обрабатывать две половины строки по-разному, я думаю, что это будет.
Я бы ожидалинтерпретатору требуется больше времени для обработки 2 * 7, чем 14, потому что он может интерпретировать и решать каждый раз.