안녕하세요. 길벗 수험서 운영팀입니다.
isempty로 가서 top==-1이 될 때까지 반복이 되서 들어가야되는데 while 반복문은 계속 반복되려면 (1)로 되어있어야 되는거 아닌가요..? 근데 while반복문 괄호 안에 !느낌표가 있는건 어떻게 하라는건지 이해가 안됩니다.
[답변]
main()의 while (!isempty())은 사용자 정의 함수 isempty()에서 1을 return하면 앞의 부정 연산자 !를 통해 0으로 바뀌어서 while문을 탈출하는 원리입니다.
isempty()에서 변수 top이 -1이 아닐 때는(top>-1) 0이 return되고, 부정 연산자 !를 통해 1로 바뀌게 되면 while(1)이 되어 while문 안의 구문을 반복하게 됩니다.
isempty()에서 변수 top이 -1일 때는(top==-1) 1이 return되고, 부정 연산자 !를 통해 0으로 바뀌게 되면 while(0)이 되어 while문을 벗어나게 되는 원리입니다.
isempty()에서 top==-1이 되기까지 왜 1의 값이 리턴된다고 디버깅에 나와있는지 모르겠어요.. top가 2일때부터 0까지 -1이 아니기 때문에 else인 0이 계속 리턴되다가 top가 -1이 되는 순간 1이 리턴 되야 하는거 아닌가요..?
[답변]
예, 맞습니다.
계속 0이 return되다가 top이 -1인 시점에서 1이 return됩니다.
기출 자료의 디버깅표가 잘못된 것으로 즉시 수정토록 하겠습니다.
while문에 있는 부정 연산자 !는 0은 1로, 1은 0으로 바꾼다는 점 기억하세요.
행복한 하루되세요.^^
-
*2018-09-18 09:35:46
안녕하세요. 길벗 수험서 운영팀입니다.
isempty로 가서 top==-1이 될 때까지 반복이 되서 들어가야되는데 while 반복문은 계속 반복되려면 (1)로 되어있어야 되는거 아닌가요..? 근데 while반복문 괄호 안에 !느낌표가 있는건 어떻게 하라는건지 이해가 안됩니다.
[답변]
main()의 while (!isempty())은 사용자 정의 함수 isempty()에서 1을 return하면 앞의 부정 연산자 !를 통해 0으로 바뀌어서 while문을 탈출하는 원리입니다.
isempty()에서 변수 top이 -1이 아닐 때는(top>-1) 0이 return되고, 부정 연산자 !를 통해 1로 바뀌게 되면 while(1)이 되어 while문 안의 구문을 반복하게 됩니다.
isempty()에서 변수 top이 -1일 때는(top==-1) 1이 return되고, 부정 연산자 !를 통해 0으로 바뀌게 되면 while(0)이 되어 while문을 벗어나게 되는 원리입니다.
isempty()에서 top==-1이 되기까지 왜 1의 값이 리턴된다고 디버깅에 나와있는지 모르겠어요.. top가 2일때부터 0까지 -1이 아니기 때문에 else인 0이 계속 리턴되다가 top가 -1이 되는 순간 1이 리턴 되야 하는거 아닌가요..?
[답변]
예, 맞습니다.
계속 0이 return되다가 top이 -1인 시점에서 1이 return됩니다.
기출 자료의 디버깅표가 잘못된 것으로 즉시 수정토록 하겠습니다.
while문에 있는 부정 연산자 !는 0은 1로, 1은 0으로 바꾼다는 점 기억하세요.
행복한 하루되세요.^^