title: Why use '\0' instead of 0 for memset?
body: <p>According to the this Unix documentation <a href="http://pubs.opengroup.org/onlinepubs/009695399/functions/bzero.html" rel="noreferrer">http://pubs.opengroup.org/onlinepubs/009695399/functions/bzero.html</a> </p>
  
  <pre><code>The memset() function is preferred over bzero().
  
  For maximum portability, it is recommended to replace 
  the function call to bzero() as follows:
  
  #define bzero(b,len) (memset((b), '\0', (len)), (void) 0)
  </code></pre>
  
  <p><br>
  But <code>void *memset(void *s, int c, size_t n);</code> second arg is an <strong>int</strong> so why are they recommending '\0' instead of 0? The memset() doc says "The memset() function shall copy <strong>c</strong> (<strong><em>converted to an unsigned char</em></strong>) arg into each of the first <strong>n</strong> bytes of the object pointed to by <strong>s</strong>." Is this more efficient or simply more explicit? Is there a best practice involved here?</p>