// section 6.7.8

int x[] = {1,3,5};

int y[4][3] = {
	{1, 3, 5},
	{2, 4, 6},
	{3, 5, 7},
};
int ysame[4][3] = {
	1, 3, 5, 2, 4, 6, 3, 5, 7
};

int z[4][3] = {
	{ 1 },  { 2 }, { 3 }, { 4 }
};

struct { int a[3], b; } w[] = { {1}, 2 };
struct { int a[3], b; } wsame[] = {[0].a = {1}, [1].a[0] = 2};

short q[4][3][2] = {
	{1},
	{2,3},
	{4,5,6}
};
short qsame[4][3][2] = {
	{{1},},
	{{2,3},},
	{{4,5},{6},}
};

typedef int A[];
A a = {1,2}, b = {3,4,5};
int asame[] = {1,2}, bsame[] = {3,4,5};

char s[] = "abc", t[3] = "abc";
char ssame[] = {'a','b','c','\0'},
	tsame[] = {'a','b','c'};

enum {m1, m2};
const char *n[] = {
	[m1] = "m1",
	[m2] = "m2",
};

enum {MAX=10};
int r[MAX] = {1,2,[MAX-3]=3,4,5};
