책 내용 질문하기
질문드립니다~~
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
조회수
54
작성일
2018-09-12
작성자
탈퇴*원
첨부파일
예2) 변수를 먼저 선언하지 않은 경우 for (int i = 0; i <10; i++) printf("%d, ", i); ‘예2)’의 경우 for문에서 사용한 i는 for문을 벗어나면 사용할 수 없게 됩니다. 즉, 아래와 같이 출력하면 존재하지 않는 변수를 사용하였다면서 에러가 발생합니다. for (int i = 0; i <10; i++) printf("%d, ", i); printf("%d", i); <- ERROR 1. 이 에러가 printf문이 두줄인데 대괄호{ }를 안해서 생긴 오류인가요? 2. 그렇다면 for문 안에서 선언한 변수는 전역변수로 봐도 되는건가요? 3. for문을 벗어난다는 것이 범위가 for문 아래 printf문 하나까지가 for문의 범위인건가요?
답변
2018-09-12 16:14:11

안녕하세요. 길벗 수험서 운영팀입니다.

1. 이 에러가 printf문이 두줄인데 대괄호{ }를 안해서 생긴 오류인가요?

[답변]

for문에서 중괄호{}가 존재하지 않는 경우, 바로 다음 수식만을 반복합니다. 즉, 아래의 코드는

for (int i = 0; i <10; i++)

printf("%d, ", i);

printf("%d", i);

이와 같이 변경할 수 있습니다.

for (int i = 0; i <10; i++) {

printf("%d, ", i);

}

printf("%d", i);

이때에 for문이 반복하는 것은 첫 번째 printf문만을 반복 수행하며, 두 번째 printf문은 for문이 종료한 시점에 실행하게 됩니다. 이 때 for문 안에서 선언한 i변수는 이미 없어진 상태이므로 오류가 발생하는 것입니다.

2. 그렇다면 for문 안에서 선언한 변수는 전역변수로 봐도 되는건가요?

[답변]

전역변수가 아닌 지역변수입니다.

전역변수는 상위 클래스 또는 상위 함수에서 선언되어 하위의 모든 클래스나 함수에서 사용이 가능한 변수를 의미합니다.

지역변수는 하위 클래스 또는 하위 함수에서 선언되어 해당 클래스나 함수가 종료되면 없어지는 변수를 의미합니다.

즉, 1.의 답변에서 예시로 든 코드의 경우 변수 i는 for문 안의 지역변수라고 할 수 있습니다.

3. for문을 벗어난다는 것이 범위가 for문 아래 printf문 하나까지가 for문의 범위인건가요?

[답변]

예, 맞습니다.

1.답변에서 말씀드린 것과 같이 중괄호{}가 존재하지 않는 경우 바로 다음 수식만을 반복 수행합니다.

(*참고로 중괄호는 {} 부호를 쓰며, 대괄호는 [] 부호를 사용합니다.)

행복한 하루되세요.^^

  • *
    2018-09-12 16:14:11

    안녕하세요. 길벗 수험서 운영팀입니다.

    1. 이 에러가 printf문이 두줄인데 대괄호{ }를 안해서 생긴 오류인가요?

    [답변]

    for문에서 중괄호{}가 존재하지 않는 경우, 바로 다음 수식만을 반복합니다. 즉, 아래의 코드는

    for (int i = 0; i <10; i++)

    printf("%d, ", i);

    printf("%d", i);

    이와 같이 변경할 수 있습니다.

    for (int i = 0; i <10; i++) {

    printf("%d, ", i);

    }

    printf("%d", i);

    이때에 for문이 반복하는 것은 첫 번째 printf문만을 반복 수행하며, 두 번째 printf문은 for문이 종료한 시점에 실행하게 됩니다. 이 때 for문 안에서 선언한 i변수는 이미 없어진 상태이므로 오류가 발생하는 것입니다.

    2. 그렇다면 for문 안에서 선언한 변수는 전역변수로 봐도 되는건가요?

    [답변]

    전역변수가 아닌 지역변수입니다.

    전역변수는 상위 클래스 또는 상위 함수에서 선언되어 하위의 모든 클래스나 함수에서 사용이 가능한 변수를 의미합니다.

    지역변수는 하위 클래스 또는 하위 함수에서 선언되어 해당 클래스나 함수가 종료되면 없어지는 변수를 의미합니다.

    즉, 1.의 답변에서 예시로 든 코드의 경우 변수 i는 for문 안의 지역변수라고 할 수 있습니다.

    3. for문을 벗어난다는 것이 범위가 for문 아래 printf문 하나까지가 for문의 범위인건가요?

    [답변]

    예, 맞습니다.

    1.답변에서 말씀드린 것과 같이 중괄호{}가 존재하지 않는 경우 바로 다음 수식만을 반복 수행합니다.

    (*참고로 중괄호는 {} 부호를 쓰며, 대괄호는 [] 부호를 사용합니다.)

    행복한 하루되세요.^^

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.