typedef char padding[16]; struct { padding p1; char v; padding p2; } padding_char; struct { padding p1; short v; padding p2; } padding_short; struct { padding p1; int v; padding p2; } padding_int; struct { padding p1; long v; padding p2; } padding_long; struct { padding p1; long long v; padding p2; } padding_long_long; struct { padding p1; float v; padding p2; } padding_float; struct { padding p1; double v; padding p2; } padding_double; struct { padding p1; long double v; padding p2; } padding_long_double; static void fill (void *buf, long sizeof_buf) { char *p = (char *) buf; int i; for (i = 0; i < sizeof_buf; i++) p[i] = "The quick brown dingo jumped over the layzy dog."[i]; } void fill_structs (void) { fill (&padding_char.p1, sizeof (padding)); fill (&padding_char.v, sizeof (padding_char.v)); fill (&padding_char.p2, sizeof (padding)); fill (&padding_short.p1, sizeof (padding)); fill (&padding_short.v, sizeof (padding_short.v)); fill (&padding_short.p2, sizeof (padding)); fill (&padding_int.p1, sizeof (padding)); fill (&padding_int.v, sizeof (padding_int.v)); fill (&padding_int.p2, sizeof (padding)); fill (&padding_long.p1, sizeof (padding)); fill (&padding_long.v, sizeof (padding_long.v)); fill (&padding_long.p2, sizeof (padding)); fill (&padding_long_long.p1, sizeof (padding)); fill (&padding_long_long.v, sizeof (padding_long_long.v)); fill (&padding_long_long.p2, sizeof (padding)); fill (&padding_float.p1, sizeof (padding)); fill (&padding_float.v, sizeof (padding_float.v)); fill (&padding_float.p2, sizeof (padding)); fill (&padding_double.p1, sizeof (padding)); fill (&padding_double.v, sizeof (padding_double.v)); fill (&padding_double.p2, sizeof (padding)); fill (&padding_long_double.p1, sizeof (padding)); fill (&padding_long_double.v, sizeof (padding_long_double.v)); fill (&padding_long_double.p2, sizeof (padding)); } int main () { int size, value; fill_structs (); size = (int) sizeof (char); size = (int) sizeof (short); size = (int) sizeof (int); size = (int) sizeof (long); size = (int) sizeof (long long); size = (int) sizeof (void*); size = (int) sizeof (void (*)(void)); size = (int) sizeof (float); size = (int) sizeof (double); size = (int) sizeof (long double); /* Signed char? */ value = '\377'; value = (int) (char) -1; value = (int) (signed char) -1; value = (int) (unsigned char) -1; return 0; }