title: Wierd result (`\210`) when printing the end of a char array
body: <p>My codes are like this:</p>
  
  <pre><code>int main(int argc, char *argv[])
  {
      char ca[] = {'0'};
      cout &lt;&lt; *ca &lt;&lt; endl;
      cout &lt;&lt; *(ca+1) &lt;&lt; endl;
      cout &lt;&lt; ca[1] &lt;&lt; endl;
      cout &lt;&lt; (char)(0) &lt;&lt; endl;
      return 0;
  }
  </code></pre>
  
  <p>The result is like this:</p>
  
  <pre><code> 0
   \210
   \210
   ^@
  </code></pre>
  
  <p>From <a href="https://stackoverflow.com/questions/14795565/difference-between-null-terminated-char-0-and">this thread</a>, I knew that <code>^@</code> is the same as <code>\0</code> actually. However, the <code>\210</code> seems not because when I use <code>hexdump</code> to view the result.</p>
  
  <pre><code> bash-3.2$ ./playground | hexdump -C
   00000000  30 0a 88 0a 88 0a 00 0a                           |0.......|
   00000008
  </code></pre>
  
  <p>It can be seen clearly that <code>\210</code> is <code>88</code> instead of <code>00</code>.</p>
  
  <p>As I understood, <code>ca+1</code> should point to a <code>null terminator</code>, which is <code>\0</code>. But why <code>cout &lt;&lt; *(ca+1) &lt;&lt; endl;</code> gives me <code>\210</code> as the result?</p>