728x90
이 오류는 배열의 인덱스로 정수가 아닌 값을 사용할 경우 발생합니다. C언어에서 배열 인덱스는 반드시 정수형이어야 하며, 실수나 포인터, 구조체 등 다른 타입을 사용할 수 없습니다.
일반적으로 float, double, 또는 잘못된 변수 타입을 인덱스로 사용할 경우 이 오류가 발생합니다. 함수 반환값이나 계산식 결과가 정수형인지도 주의 깊게 확인해야 합니다.
아래 예제를 확인해 보세요.
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50};
float idx = 2.0;
printf("%d\n", arr[idx]); // float형 인덱스 사용 → 오류
return 0;
}
컴파일 시 다음과 같은 오류가 출력됩니다.
error: array subscript is not an integer
정상적인 예시는 다음과 같습니다.
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50};
int idx = 2;
printf("%d\n", arr[idx]); // 정수형 인덱스 사용
return 0;
}
출력 결과:
30
● 실전 팁
- 배열 인덱스는 반드시 정수형 변수 또는 상수를 사용해야 합니다.
- 실수형 변수를 인덱스로 사용하지 않도록 주의하세요.
- 함수나 연산 결과가 정수형인지 반드시 확인하고, 필요 시 명시적 형변환을 사용하세요.
배열 접근은 매우 기본적인 연산이지만, 타입을 정확히 지키지 않으면 간단한 연산도 컴파일러가 거부하게 됩니다. 인덱스 타입 오류는 사소하지만 잦은 실수이므로 주의가 필요합니다.
728x90