1#include <stdio.h> 2 3typedef char padding[16]; 4 5struct { 6 padding p1; 7 char v; 8 padding p2; 9} padding_char; 10 11struct { 12 padding p1; 13 short v; 14 padding p2; 15} padding_short; 16 17struct { 18 padding p1; 19 int v; 20 padding p2; 21} padding_int; 22 23struct { 24 padding p1; 25 long v; 26 padding p2; 27} padding_long; 28 29struct { 30 padding p1; 31 long long v; 32 padding p2; 33} padding_long_long; 34 35struct { 36 padding p1; 37 float v; 38 padding p2; 39} padding_float; 40 41struct { 42 padding p1; 43 double v; 44 padding p2; 45} padding_double; 46 47struct { 48 padding p1; 49 long double v; 50 padding p2; 51} padding_long_double; 52 53static void 54fill (void *buf, long sizeof_buf) 55{ 56 char *p = buf; 57 int i; 58 for (i = 0; i < sizeof_buf; i++) 59 p[i] = "The quick brown dingo jumped over the layzy dog."[i]; 60} 61 62void 63fill_structs (void) 64{ 65 fill (&padding_char.p1, sizeof (padding)); 66 fill (&padding_char.v, sizeof (padding_char.v)); 67 fill (&padding_char.p2, sizeof (padding)); 68 69 fill (&padding_short.p1, sizeof (padding)); 70 fill (&padding_short.v, sizeof (padding_short.v)); 71 fill (&padding_short.p2, sizeof (padding)); 72 73 fill (&padding_int.p1, sizeof (padding)); 74 fill (&padding_int.v, sizeof (padding_int.v)); 75 fill (&padding_int.p2, sizeof (padding)); 76 77 fill (&padding_long.p1, sizeof (padding)); 78 fill (&padding_long.v, sizeof (padding_long.v)); 79 fill (&padding_long.p2, sizeof (padding)); 80 81 fill (&padding_long_long.p1, sizeof (padding)); 82 fill (&padding_long_long.v, sizeof (padding_long_long.v)); 83 fill (&padding_long_long.p2, sizeof (padding)); 84 85 fill (&padding_float.p1, sizeof (padding)); 86 fill (&padding_float.v, sizeof (padding_float.v)); 87 fill (&padding_float.p2, sizeof (padding)); 88 89 fill (&padding_double.p1, sizeof (padding)); 90 fill (&padding_double.v, sizeof (padding_double.v)); 91 fill (&padding_double.p2, sizeof (padding)); 92 93 fill (&padding_long_double.p1, sizeof (padding)); 94 fill (&padding_long_double.v, sizeof (padding_long_double.v)); 95 fill (&padding_long_double.p2, sizeof (padding)); 96} 97 98int 99main () 100{ 101 fill_structs (); 102 103 printf ("sizeof (char) == %d\n", sizeof (char)); 104 printf ("sizeof (short) == %d\n", sizeof (short)); 105 printf ("sizeof (int) == %d\n", sizeof (int)); 106 printf ("sizeof (long) == %d\n", sizeof (long)); 107 printf ("sizeof (long long) == %d\n", sizeof (long long)); 108 109 printf ("sizeof (void *) == %d\n", sizeof (void*)); 110 printf ("sizeof (void (*)(void)) == %d\n", sizeof (void (*)(void))); 111 112 printf ("sizeof (float) == %d\n", sizeof (float)); 113 printf ("sizeof (double) == %d\n", sizeof (double)); 114 printf ("sizeof (long double) == %d\n", sizeof (long double)); 115 116 /* Signed char? */ 117 printf ("valueof ('\\377') == %d\n", '\377'); 118 printf ("valueof ((int) (char) -1) == %d\n", (int) (char) -1); 119 printf ("valueof ((int) (signed char) -1) == %d\n", (int) (signed char) -1); 120 printf ("valueof ((int) (unsigned char) -1) == %d\n", (int) (unsigned char) -1); 121 122 return 0; 123} 124