title: Is the memory alignment different for different data types
body: <p>Do different data types in C such as <code>char</code>, <code>short</code>, <code>int</code>, <code>long</code>, <code>float</code>, <code>double</code> have different memory alignment boundaries? In a 32 bit word aligned byte addressable operating system, how is accessing a <code>char</code> or <code>short</code> different from accessing an <code>int</code> or <code>float</code>? In both cases, does the CPU read a full 32-bit word? What happens when an <code>int</code> is not at the boundary? How is it able to read a <code>char</code> at any memory address?</p>