As others pointed out, your compiler probably will throw warnings.
To give you a straight answer, what is happening is that you are defining a symbol associated witht the array name "array" of one element, then the program places the initializer values starting from address &a[0] independently from the associated array size.
Which means sizeof(array) should still return 1 and any operation of accessing elements of array in index greater than 0 will generate compiler warnings.
Probably, if you were to define another int variable after the array with an assigned value, the second element of the array initializer will be replaced in memory by the former.