2014-01-23 2 views
1
int main() { 
    int input = 0; 
    do { 
     if(input > 1) { 
      printf("You entered"); 
      break; 
     } 

     printf("Enter an integer (> 1): "); 
     scanf("%d",&input); 

    } while(input < 2); 

    return 0; 
} 

안녕하세요, 저는 C가 처음입니다. 누구든지 휴식 시간을 설명해 주시겠습니까? 이 프로그램에서 "입력 한"중단 전의 진술은 콘솔에 표시되지 않습니다. 나는 자바를 안다. 그러나 이것은 완전히 다른 것이다.휴식 전 코드가 작동하지 않는 이유는 무엇입니까?

+0

입력을 2로 설정하고 첫 번째 printf 전에 별표를 제거한 다음 어떤 일이 발생하는지 확인하십시오. – AndyG

+0

모두에게 감사드립니다. 나는 그 실수로 내가 실수 한 것을 알지 못했다. 나는 휴식 시간에 뭔가 잘못된 것이 있다고 생각했습니다. 다들 감사 해요. –

답변

4

12 사이에 정수가 없습니다. 당신이 1 다음 프로그램이 if 몸이 다음 You entered를 인쇄 입력하고 break 문을 발생에 즉시 do-while 루프를 종료 입력하면

if(input > 1) 

그 후

if(input > 0) 

에 변경합니다.

+0

당신은 아무 것도 대답하지 않습니다. – ugoren

+1

@ugoren; 그래, 내가 했어. 'while (input <2); '를 참조하십시오. – haccks

+0

그는 "내 프로그램을 수정 해주십시오"라고 말하지 않았습니다. 그는'휴식'이 무엇이고, 그의 프로그램에 무엇이 잘못 됐는지를 물었다. – ugoren

2

"break"문은 코드가 루프를 즉시 종료하도록합니다.

당신은 어떤 출력이 표시되지 않는 때문에 당신만을 반복 입력이 2보다 확실히 작은,하지만 if 문이 작동하지 않을 것 1.

보다 확실히 더의 입력을 찾고있는 동안, 1을 입력하면 if 문이 실행되지 않고 (1> 1이 false이므로) 2를 입력하면 루프가 즉시 종료됩니다 (2 < 2가 false이기 때문에).

당신> = 1

표준 출력은 일반적으로 라인 버퍼 모든 것을 ... 미루어 입력 < = 2, 또는 입력을 테스트 할 필요가있는 동안 루프 중 필요 즉, 버퍼가 꽉 찼거나 줄 바꿈 문자를 보낼 때까지 콘솔에 아무 것도 나타나지 않습니다. 형식 문자열의 일부로 스트림을 수동으로 플러시하거나 개행 문자를 보내야합니다. 하나

printf("You entered"); 
fflush(stdout);   

또는

printf("You entered\n"); 

작동합니다.

관련 문제