/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <stdio.h>
#include <stdbool.h>
struct foo1
{
char *p;
char c;
long x;
};
struct foo2
{
char c; /* 1 byte */
char pad[7]; /* 7 bytes */
char *p; /* 8 bytes */
long x; /* 8 bytes */
};
struct foo3
{
char *p; /* 8 bytes */
char c; /* 1 byte */
};
struct foo4
{
short s; /* 2 bytes */
char c; /* 1 byte */
};
struct foo5
{
char c;
struct foo5_inner
{
char *p;
short x;
} inner;
};
struct foo6
{
short s;
char c;
int flip:1;
int nybble:4;
int septet:7;
};
struct foo7
{
int bigfield:31;
int littlefield:1;
};
struct foo8
{
int bigfield1:31;
int littlefield1:1;
int bigfield2:31;
int littlefield2:1;
};
struct foo9
{
int bigfield1:31;
int bigfield2:31;
int littlefield1:1;
int littlefield2:1;
};
struct foo10
{
char c;
struct foo10 *p;
short x;
};
struct foo11
{
struct foo11 *p;
short x;
char c;
};
struct foo12
{
struct foo12_inner
{
char *p;
short x;
} inner;
char c;
};
main (int argc, char *argv)
{
printf ("sizeof(char *) = %zu\n", sizeof (char *));
printf ("sizeof(long) = %zu\n", sizeof (long));
printf ("sizeof(int) = %zu\n", sizeof (int));
printf ("sizeof(short) = %zu\n", sizeof (short));
printf ("sizeof(char) = %zu\n", sizeof (char));
printf ("sizeof(float) = %zu\n", sizeof (float));
printf ("sizeof(double) = %zu\n", sizeof (double));
printf ("sizeof(struct foo1) = %zu\n", sizeof (struct foo1));
printf ("sizeof(struct foo2) = %zu\n", sizeof (struct foo2));
printf ("sizeof(struct foo3) = %zu\n", sizeof (struct foo3));
printf ("sizeof(struct foo4) = %zu\n", sizeof (struct foo4));
printf ("sizeof(struct foo5) = %zu\n", sizeof (struct foo5));
printf ("sizeof(struct foo6) = %zu\n", sizeof (struct foo6));
printf ("sizeof(struct foo7) = %zu\n", sizeof (struct foo7));
printf ("sizeof(struct foo8) = %zu\n", sizeof (struct foo8));
printf ("sizeof(struct foo9) = %zu\n", sizeof (struct foo9));
printf ("sizeof(struct foo10) = %zu\n", sizeof (struct foo10));
printf ("sizeof(struct foo11) = %zu\n", sizeof (struct foo11));
printf ("sizeof(struct foo12) = %zu\n", sizeof (struct foo12));
}