반응형
void f(){
int a = 3;
int c = 0;
for(int i = 0; i < a; i++) {
int a = 10;
c += a;
}
}
질문 ==>
이 똑같은 코드를 자바와 c에서 돌린다고 하면,
C은 왜 실행이 되고 자바는 왜 for문안쪽의 a에서 오류가 날까요?
답변 ==>
위 코드는 C와 자바에서 실행 결과가 다를 수 있는 코드입니다. 이는 C와 자바의 변수 스코프(scope)가 다르기 때문입니다.
C에서는 변수의 스코프가 블록(block) 단위로 구분됩니다. 위 코드에서 변수 a는 함수 f()의 블록 안에서 정의되었으며, for문 안에서 정의된 변수 a는 for문의 블록 안에서만 유효합니다. 따라서, for문 안에서 정의된 변수 a와 함수 f() 안에서 정의된 변수 a는 이름이 같아도 서로 다른 변수로 간주됩니다.
반면, 자바에서는 변수의 스코프가 중괄호({})로 구분되는 블록 단위로 구분되지 않습니다. 따라서, for문 안에서 정의된 변수 a는 함수 f() 안에서 정의된 변수 a와 이름이 같아서 충돌이 발생합니다.
자바에서는 이러한 충돌을 막기 위해 변수의 이름을 중복되지 않도록 하거나, 변수의 스코프를 블록 단위로 구분할 수 있는 중괄호를 추가하여 코드를 작성해야 합니다.
반응형
'IT지식창고 > 잡지식' 카테고리의 다른 글
[포르투갈어] 포르투갈 여행 시 쓸 수 있는 기본 현지 대화, 언어 (1) | 2024.06.13 |
---|---|
런지 운동이란 ? 개념, 역사, 어원, 배경 (0) | 2024.06.13 |
html에 mov 사용하면 안되나요? - autoplay loop controls (0) | 2023.04.09 |
출생 연도를 입력하면, 백신을 접종받을 수 있는 요일을 출력하는 프로그램 - 두근두근 파이썬 제 5장 연습문제 12번 (0) | 2023.04.09 |
[C++ 예시] 드라이버 코드란? (0) | 2023.04.09 |
댓글