title: variables of type size_t and ptrdiff_t
body: <p>By reading on the posts online related to <code>size_t</code> and <code>ptrdiff_t</code>, I want to confirm the following:</p>
  
  <ol>
  <li><p>if the max size of an array is less than <code>1/2*(max number represent-able by size_t)</code>, I can safely use <code>ptrdiff_t</code> and check the relative distances between two pointers to the same object?(Since I was talking about array, "pointers to same object" means "pointers to same array").</p></li>
  <li><p>if I want to declare a variable that can represent the offset from another pointer, I better declare it as type <code>ptrdiff_t</code> ?</p></li>
  <li><p>How do I output variables of type <code>size_t</code> and <code>ptrdiff_t</code> in C and C++? Is the following correct: <a href="https://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size-t">Cross platform format string for variables of type size_t?</a></p></li>
  <li><p>is <code>uintptr_t</code> is just another name for <code>size_t</code> OR it should be used as a separate type from <code>size_t</code>?</p></li>
  <li><p>is <code>ssize_t</code> and <strong><code>intptr_t</code></strong> another names for <code>ptrdiff_t</code> OR it has to be used differently?</p></li>
  </ol>
  
  <p>I am starting to use gcc on Ubuntu. I just found out about these types when using someone 
  else's codes.</p>
  
  <p>ADDed: I do want to be able to use <strong>negative</strong> offsets. And any difference in using <code>uintptr_t</code> and <code>intptr_t</code>?</p>