title: Char and int16 array element both shown as 32bit hex?
body: <p>In the example below:</p>
  
  <pre><code>int main(int argc, char *argv[])
  {
      int16_t array1[] = {0xffff,0xffff,0xffff,0xffff};
      char array2[] = {0xff,0xff,0xff,0xff};
      printf("Char size: %d \nint16_t size: %d \n", sizeof(char), sizeof(int16_t));
  
      if (*array1 == *array2)
          printf("They are the same \n");
      if (array1[0] == array2[0])
          printf("They are the same \n");
  
      printf("%x \n", array1[0]);
      printf("%x \n", *array1);
  
      printf("%x \n", array2[0]);
      printf("%x \n", *array2);
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>Char size: 1 
  int16_t size: 2 
  They are the same 
  They are the same 
  ffffffff 
  ffffffff 
  ffffffff 
  ffffffff
  </code></pre>
  
  <p>Why are the 32bit values printed for both <code>char</code> and <code>int16_t</code> and why can they be compared and are considered the same?</p>