디버그모드에선 되는데 릴리즈모드에선 안되는 소스입니다. 도와주세요ㅠㅠ
기쁨해
질문 제목 : 질문 내용 :
#include stdio.hvoid main()
{
int i,j,input;
printf(크기를 입력하세요(자연수) : );
fflush(stdin);
scanf(%d, &input);
if(input0&&input14)
{
printf(어린이\n);
}
else if(input=14)
{
printf(청소년\n);
}else
{
printf(잘못된 입력값입니다. 다시 입력해주세요.\n\n\n);
main();
}}
실행파일을 타인에게 보냈을때 릴리즈모드로 해야 실행이된다는말을 듣고 실험하다 궁금증이 생겨 문의합니다
위의 소스는
디버그모드로 컴파일시 숫자가 아닌 입력값은 else에 걸려서 잘못된 입력값이라 하는데
릴리즈모드로 컴파일시 숫자가 아닌 입력값도 모두 숫자로 취급하여 else에 걸리지 않습니다.
ex) a를 입력하면 디버그모드에선 잘못된 입력값입니다. 다시입력해주세요 가 출력되고
릴리즈모드에선 청소년 이 출력이 됩니다.
왜 이런건가요?
p.s 추가질문 : 위의 소스가 재귀함수인가요?
-
다한
그쪽에대해선 잘모르겠습니다. ㅠㅠ 재귀함수란 함수내에서 함수값을 다시불러들여와 쓰는걸로 알고있습니다. 위함수는 아닌듯싶네요
-
파란
제가 글을 잘 못써서..ㅎㅎ;;
위 소스에서 0보다 크고 14보다 작으면 \어린이\가 출력되구요
14보다 크면 \청소년\ 이 출력되는데요
디버그모드로 컴파일을 했을 때 숫자가 아닌 알파벳이나 특수문자를 입력하면
\잘못된 입력값입니다.\ 가 출력이 되구요
릴리즈모드로 컴파일을 했을 때는 \청소년\ 이 출력이 되네요
같은 입력값인데 디버그모드랑 릴리즈모드 왜 다른값이 출력되는건지 궁금합니다. -
해나
질문의 뜻을 이해 못하겠습니다.