2014-12-07 3 views
0

나는 이것에 대해 잘 모릅니다. 그래서 나는 그것을 설명하려고하는 약간의 코드를 썼다. cin 또는 getline으로 입력을 요청하지 않았는데도 왜 숫자 나 문자를 저장할 수 있는지 궁금합니다. 내 제한된 지식으로 지금 당장 생각할 수있는 유일한 것은 "while (!(cin >> num1))"이지만 다시 while 루프가 조건을 실행하는 이유는 무엇입니까?cin, getline 등을 사용하지 않고 값을 저장하는 방법은 무엇입니까

#include <iostream> 
#include <limits> 

using namespace std; 

int main() 
{ 
    int num1; 
    cout << "Please enter a number: "; 
    while (!(cin >> num1)) 
    { 
     cin.clear(); 
     cin.ignore(numeric_limits<streamsize>::max(), '\n'); 
     cout << "Invalid input. Try again: "; 
    } 
} 
+4

을 종료 그렇지 않으면 모르는 것에 대한 여부 루프 본문을 입력하십시오. –

+1

'while' 루프가 조건을 실행하는 것 이외에 무엇을 기대합니까? 루프에서 코드를 실행해야하는지 여부를 결정하기 위해 적어도 한 번 이상 조건을 실행하지 않은 while 루프를 작성해야하는 이유를 생각해 볼 수 있습니까? –

+0

오, 고마워. 나는 항상 그 상태를 '확인'했다고 생각했다. 그렇게 정리해 줘서 고마워. –

답변

0

cin >> num1 

가 동작하고 모두 표현된다. >> 함수는 입력을 num1에 저장하는 동시에 부울 값을 반환합니다.

while(!(0)){ //code } 

해당

while(1){ //code } 

해당

while(true){ //code } 

때문에 때

에 : 성공적인 읽기/저장 CIN >> NUM1이 같은 0 및 while 루프 조건 모습을 반환에 cin >> sum1이 성공적으로 실행되면 루프가 계속됩니다.

cin >> num1에서 읽기/저장에 실패하면 이 반환됩니다. while 루프 조건에서는 false로 평가됩니다.

while(!(1)){ //code } 

해당

while(false){ //code } 

및 루프가 항상 최소한 한 번 괄호 안의 코드를 실행하는 동안 루프는 ... 여기