title: When was the NULL macro not 0?
body: <p>I vaguely remember reading about this a couple of years ago, but I can't find any reference on the net.</p>
  
  <p>Can you give me an example where the NULL macro didn't expand to 0?</p>
  
  <p>Edit for clarity: Today it expands to either <code>((void *)0)</code>, <code>(0)</code>, or <code>(0L)</code>. However, there were architectures long forgotten where this wasn't true, and NULL expanded to a different address. Something like</p>
  
  <pre><code>#ifdef UNIVAC
       #define NULL (0xffff)
  #endif
  </code></pre>
  
  <p>I'm looking for an example of such a machine.</p>
  
  <p><strong>Update to address the issues:</strong> </p>
  
  <p>I didn't mean this question in the context of current standards, or to upset people with my incorrect terminology. However, my assumptions were confirmed by the accepted answer:</p>
  
  <blockquote>Later models used [blah], evidently as a sop to all the extant poorly-written C code which made incorrect assumptions.</blockquote>
  
  <p>For a discussion about null pointers in the current standard, see <a href="https://stackoverflow.com/questions/2599207/can-a-conforming-c-implementation-define-null-to-be-something-wacky">this question</a>.</p>