title: Is there really such a thing as a char or short in modern programming?
body: <p>I've been learning to program for a Mac over the past few months (I have experience in other languages). Obviously that has meant learning the Objective C language and thus the plainer C it is predicated on. So I have stumbles on this quote, which refers to the C/C++ language in general, not just the Mac platform.</p>
  
  <blockquote>
    <p>With C and C++ prefer use of int over
    char and short. The main reason behind
    this is that C and C++ perform
    arithmetic operations and parameter
    passing at integer level, If you have
    an integer value that can fit in a
    byte, you should still consider using
    an int to hold the number. If you use
    a char, the compiler will first
    convert the values into integer,
    perform the operations and then
    convert back the result to char.</p>
  </blockquote>
  
  <p>So my question, is this the case in the Mac Desktop and IPhone OS environments? I understand when talking about theses environments we're actually talking about 3-4 different architectures (PPC, i386, Arm and the A4 Arm variant) so there may not be a single answer.</p>
  
  <p>Nevertheless does the general principle hold that in modern 32 bit / 64 bit systems using 1-2 byte variables that don't align with the machine's natural 4 byte words doesn't provide much of the efficiency we may expect.</p>
  
  <p>For instance, a plain old C-Array of 100,000 chars is smaller than the same 100,000 ints by a factor of four, but if during an enumeration, reading out each index involves a cast/boxing/unboxing of sorts, will we see overall lower 'performance' despite the saved memory overhead?</p>