int x[3] = { 1 , 2, 3, 4 } ; /* Initializer block for x has 4 elements, but declared as int[3] */
int a[3] = { 1 , 2 } ; /* Initializer block for a has 2 elements, but declared as int[3] */
int aa[3][3] = { { 1 , 2, 3 }, /* Initializer block for aa has 2 elements, but declared as int[3][3] */
                 { 4, 5 } } ; /* Initializer block for aa[1] has 2 elements, but declared as int [3] */

int ab[] = { 1, 2, 3 } ;

char cc[3] = { 'a', 'b', 'c' } ;
char cs[3] = "ab";
char cs1[3] = "abc"; /* gcc doesn't warn for this */  /* stringliteralnoroom */
char cs2[3] = "abcd"; /* gcc warns for this with -Wall */ /* stringliteraltoolong */
char cs3[3] = "a"; /* stringliteral smaller (not on default) */ 

char csx[3][3] = { { 'a', 'b', 'c' } , "def", "gasdf" } ; /* 2 errors */

int a2[][2] = {{1,2},{3,4},{5,6}};
int a3[][2] = {{1,2},{3,4,5},{5,6}};


syntax highlighted by Code2HTML, v. 0.9.1