#include "test.h" int g1, g2[4]; static int g3 = 3; int main() { ASSERT(3, ({ int a; a=3; a; })); ASSERT(3, ({ int a=3; a; })); ASSERT(8, ({ int a=3; int z=5; a+z; })); ASSERT(3, ({ int a=3; a; })); ASSERT(8, ({ int a=3; int z=5; a+z; })); ASSERT(6, ({ int a; int b; a=b=3; a+b; })); ASSERT(3, ({ int foo=3; foo; })); ASSERT(8, ({ int foo123=3; int bar=5; foo123+bar; })); ASSERT(4, ({ int x; sizeof(x); })); ASSERT(4, ({ int x; sizeof x; })); ASSERT(8, ({ int *x; sizeof(x); })); ASSERT(16, ({ int x[4]; sizeof(x); })); ASSERT(48, ({ int x[3][4]; sizeof(x); })); ASSERT(16, ({ int x[3][4]; sizeof(*x); })); ASSERT(4, ({ int x[3][4]; sizeof(**x); })); ASSERT(5, ({ int x[3][4]; sizeof(**x) + 1; })); ASSERT(5, ({ int x[3][4]; sizeof **x + 1; })); ASSERT(4, ({ int x[3][4]; sizeof(**x + 1); })); ASSERT(4, ({ int x=1; sizeof(x=2); })); ASSERT(1, ({ int x=1; sizeof(x=2); x; })); ASSERT(0, g1); ASSERT(3, ({ g1=3; g1; })); ASSERT(0, ({ g2[0]=0; g2[1]=1; g2[2]=2; g2[3]=3; g2[0]; })); ASSERT(1, ({ g2[0]=0; g2[1]=1; g2[2]=2; g2[3]=3; g2[1]; })); ASSERT(2, ({ g2[0]=0; g2[1]=1; g2[2]=2; g2[3]=3; g2[2]; })); ASSERT(3, ({ g2[0]=0; g2[1]=1; g2[2]=2; g2[3]=3; g2[3]; })); ASSERT(4, sizeof(g1)); ASSERT(16, sizeof(g2)); ASSERT(1, ({ char x=1; x; })); ASSERT(1, ({ char x=1; char y=2; x; })); ASSERT(2, ({ char x=1; char y=2; y; })); ASSERT(1, ({ char x; sizeof(x); })); ASSERT(10, ({ char x[10]; sizeof(x); })); ASSERT(2, ({ int x=2; { int x=3; } x; })); ASSERT(2, ({ int x=2; { int x=3; } int y=4; x; })); ASSERT(3, ({ int x=2; { x=3; } x; })); ASSERT(7, ({ int x; int y; char z; char *a=&y; char *b=&z; b-a; })); ASSERT(1, ({ int x; char y; int z; char *a=&y; char *b=&z; b-a; })); ASSERT(8, ({ long x; sizeof(x); })); ASSERT(2, ({ short x; sizeof(x); })); ASSERT(24, ({ char *x[3]; sizeof(x); })); ASSERT(8, ({ char (*x)[3]; sizeof(x); })); ASSERT(1, ({ char (x); sizeof(x); })); ASSERT(3, ({ char (x)[3]; sizeof(x); })); ASSERT(12, ({ char (x[3])[4]; sizeof(x); })); ASSERT(4, ({ char (x[3])[4]; sizeof(x[0]); })); ASSERT(3, ({ char *x[3]; char y; x[0]=&y; y=3; x[0][0]; })); ASSERT(4, ({ char x[3]; char (*y)[3]=x; y[0][0]=4; y[0][0]; })); { void *x; } ASSERT(3, g3); printf("OK\n"); return 0; }