main 함수 생략하고
1번
char arr[2];
arr[0] = 2; // char 타입 배열에 정수 2를 넣었는데 문제가 없는 이유...
2번
int arr[2]; // int 타입의 사이즈 2 배열 선언
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
위에 두 경우 Java 관점에서 보면 당연 컴파일 에러인데
C에서는 컴파일도 잘 되고 출력 결과도 잘 나오는 이유가 뭐죠?
오늘 이 두개로 카페서 멘탈 붕괴되는 줄 알았어요... 충격
2를 문자로 인식함
1. 묵시적 형변환 2. 주솟값에 그냥 할당인데 이건 경고뜰껄?
ㄴ 그럼 1번에서 arr[0] 에 넣은 데이터 2는 char 로 캐스팅 된거라 보면 되는건가요?
유효하지 않은 주소에 값 할당하면 오류뜨지않나.. 이건 뭐 컴파일러마다 다른가보네
ㅇㅇㅇㅇ
char로 컴파일러가 알아서 캐스팅함.
죠쓰 : 2번은 arr[6] 까지 넣었을때는 경고 안뜨고 arr[8] 정도에서 경고 뜨더라구요..
원래 C는 배열 크기를 넘는 공간에 데이터를 집어넣는지 체크안함
char형은 단순히 문자를 표현하는데 쓸 것이다라고 정의한 정수형임 1이 들어가는 건 오류가 아님