Question about Constants

There can't be any clarification. That is my point. Optimization is not guaranteed or defined. A "good" optimizer will translate
x = Constant
into
x = 123
All it has done, is convert a constant into a literal value.
but you can't make a general statement about that, except that "usually" it will. If it has to perform operations that require multi words, varying contexts would dictate different manipulation of the component words. An "old school" compiler would:

  1. Allocate ROM memory for the declared constant
  2. emit a macro for operations using its multi word value

Of course, they are much better than that now. But it's not guaranteed.

At the processor level, not all machine instructions are ambivalent about whether the data is variable or constant. Thus different code must be produced depending on which elements of an expression are literals or variables (taking it as a given that literals and constants are interchangeable).

Attempting to address your point directly, regardless of whether a contant replaced by a literal or a literal is involved, the compiler must allocate storage for it, if it is not possible to code it inline in machine code. Sometimes it is, sometimes it isn't. This, for example, can not be inlined:

const char flooby[] = "hello";
...
char x = flooby[ sin(log2(random())) ];