인프런 커뮤니티 질문&답변

호우호님의 프로필 이미지
호우호

작성한 질문수

홍정모의 따라하며 배우는 C언어

6.13 탈출조건 루프 do while

왜 비교를 하기 전에 입력을 미리 받아야 하나요?

작성

·

148

0

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

int main()

{

const int pw = 4531;

int num = 0;

 

printf("enter secret code : ");

scanf("%d", &num);

 

while (num != pw)

{

printf("Enter secret code : ");

scanf("%d", &num);

}

printf("Good!");

return 0;

}

 

위 코드에서 교수님이 이 문제의 특징은 비교를 하기 전에 입력을 한번은 받아야 한다는 것이다 라고 얘기하셨는데, 왜 비교하기 전에 입력을 받아야 하나요? while 위에 있는 printf와 scanf함수가 없어도 정상적으로 프로그램이 구현되는 것 같아서요! 

p.s 지난 강에서 다른 예제로 설명을 해주셨는데 아직 제대로 이해가 안가서 질문 드립니다!!

답변 1

1

홍정모님의 프로필 이미지
홍정모
지식공유자

좋은 질문입니다. 

생각하시는 대로 이 예제에서는 num이 0으로 초기화되기 때문에 어차피 pw와 다르니까 while이 문제 없이 진행이 됩니다.

프로그래머는 일반적인 경우를 생각해야 합니다. 여기서는 암호 (pw)가 어떤 값인지를 우리가 알고 있기 때문에 num = 0이면 pw와 다르다는 것을 알고 있지만 만약에 pw가 어떤 값인지를 모를 경우에는 모호성이 발생합니다. 예를 들어서 pw가 우연히 0이었다면 바로 처음부터 while문에 들어가지 못하고 암호를 맞춘것처럼 되어버리겠죠.

 

 

호우호님의 프로필 이미지
호우호

작성한 질문수

질문하기