|
또치 님이 쓰신 글 :
: main()함수 내에 프로그램을 빠져나오기 위해 [return 0; ]을 입력했어요. 그런데 turbo c로
: compile하는 과정에서 꼭 unreachable code in function main, 이라는 에러 메시지가 뜨면서
: 컴파일을 할 수가 없어요. 다음은 제가 애를 먹었던 프로그램 중 하나 입니다. 보시고 해결 방안을 알려주시면 넘 고맙겠습니다. 꾸벅 ( - - ) ( _ _ )
컴파일러는 exit()문 자체가 루프를 빠져나가는 기능을 한다는 것을 알지 못합니다.
(사람이라도 exit()의 기능을 알려면 도움말을 읽어야 하잖아요!)
그래서 무한 루프로 판정해버리죠.
exit(); 문은 예기치 못한 에러와 같은, 예외 처리에만 쓰시는 것이 좋습니다.
그 외에는 가능한 한 쓰지 마세요.
이렇게 루프를 빠져나가는 기능을 하려고 하면 안됩니다!
코드를 다음과 같이 고치면 되겠네요.
: #include <stdio.h>
: #include <stdlib.h>
:
int main() // main()의 리턴 타입을 지정하지 않으면 int가 되지만, 관례상 그냥 적으세요.
: {
: int answer;
:
do {
: puts("Enter a value between 1 and 10, 0 to exit: ");
: scanf("%d", & answer);
:
: switch(answer)
: {
case 0:
break;
case 1: case 2: case 3: case 4: case 5: // 그냥 이렇게 가로로 붙이세요.
puts("You entered the value between 1 and 5.\n");
break; // switch 문 안에서 {}를 쓰지 않습니다.
case 6: case 7: case 8: case 9: case 10:
puts("You entered the value between 6 and 10.\n");
break;
default:
puts("Try again...\n);
: }
} while (answer != 0);
// 무한 루프를 쓰느니, 그냥 이렇게 조건을 다시 검사해 주시는게 더 낫습니다.
return 0;
: }
아니면, switch문 보다는 차라리 if문을 쓰시는 것이 이 경우엔 더 낫겠네요.
: #include <stdio.h>
: #include <stdlib.h>
:
int main()
: {
: int answer;
:
while (1) { // 왜 굳이 2를 쓰셨었죠? 관례적으로 1을 쓰는 겁니다.
: puts("Enter a value between 1 and 10, 0 to exit: ");
: scanf("%d", & answer);
:
if (answer == 0)
break;
else (1 <= answer && answer <= 5)
puts("You entered the value between 1 and 5.\n");
else (6 <= answer && answer <= 10)
puts("You entered the value between 6 and 10.\n");
else
puts("Try again...\n);
}
return 0;
: }
|