|
음... 감동입니다 ^___^
이렇게 자세히 알려주시다니.
제가 고수가 되면 저도 지금의 저같은 분들에게 도움이 될 수 있도록 할게요. ^^*
다시 한번 감사. 꾸벅 ( - - ) ( _ _ )
김백일 님이 쓰신 글 :
: 또치 님이 쓰신 글 :
: : 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;
: : }
|