안녕하세요. 길벗 수험서 운영팀입니다.
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.답변에서 말씀드린 것과 같이 중괄호{}가 존재하지 않는 경우 바로 다음 수식만을 반복 수행합니다.
(*참고로 중괄호는 {} 부호를 쓰며, 대괄호는 [] 부호를 사용합니다.)
행복한 하루되세요.^^