title: What are expressions with side effects and why should they be not passed to a macro?
body: <p>I came across a statement in the text C How to Program:</p>
  
  <p>"Expressions with side effects (i.e., variable values are modified) should not be passed to a macro because macro arguments may be evaluated more than once.".</p>
  
  <p>My question is what are expressions with side effects and why should they be not passed to a macro?</p>