김펭귄 관찰일기
article thumbnail

1. warning: excess elements in array initializer [-Wexcess-initializers]


 오랜만에 백준을 해볼까 했더니만 시작부터 에러를 만났다.

 

excess elements in array initializer

배열 초기화 과정에서 초과된 요소

 

2. excess elements in array initializer 발생원인


 말 그대로, 배열을 초과한 요소가 있을 때 발생하는 에러다. 배열에 인덱스를 넘어선 값을 넣으려고 할 때 발생하며, 해결방법은 넣으려는 값만큼의 인덱스를 추가로 만들어주면 된다.

 

    int chess[5] = {1, 1, 1, 2, 2, 8};
    int input[5] = {0, 0, 0, 0, 0, 0};
    
    scanf("%d %d %d %d %d %d", &input[0], &input[1], &input[2], &input[3], &input[4], &input[5]);

 

 위 chess와 input 배열은 6개의 값을 입력 받아야 하지만 인덱스가 5인 배열로 선언되어 있기 때문에, 에러가 발생했던 것이다.

 

    int chess[6] = {1, 1, 1, 2, 2, 8};
    int input[6] = {0, 0, 0, 0, 0, 0};
    
    scanf("%d %d %d %d %d %d", &input[0], &input[1], &input[2], &input[3], &input[4], &input[5]);

 

인덱스 값을 하나 올려주니 에러 없이 잘 돌아간다. 이런 기본적인 실수를 하다니..

profile

김펭귄 관찰일기

@Penguin.Kim