title: Where are expressions and constants stored if not in memory?
body: <p>From <em>C Programming Language</em> by Brian W. Kernighan </p>
  
  <blockquote>
    <p>&amp; operator only applies to objects in memory: variables and array
    elements. It cannot be applied to expressions, constants or register
    variables.</p>
  </blockquote>
  
  <p>Where are expressions and constants stored if not in memory?
  What does that quote mean? </p>
  
  <p>E.g:<br>
  <code>&amp;(2 + 3)</code></p>
  
  <p>Why can't we take its address? Where is it stored?<br>
  Will the answer be same for C++ also since C has been its parent?</p>
  
  <p>This linked <a href="https://stackoverflow.com/questions/4301179/why-is-taking-the-address-of-a-temporary-illegal">question explains</a> that such expressions are <code>rvalue</code> objects and all <code>rvalue</code> objects do not have addresses.</p>
  
  <p>My question is where are these expressions stored such that their addresses can't be retrieved? </p>