다음과 같은 프로그램이 있습니다:
큰 숫자(예: 99999999999, 실제로는 4바이트만 필요)나 문자를 직접 입력하면 다음과 같은 출력이 생성됩니다.
이것을 어떻게 이해하나요?
C++ 초보자는 무릎꿇고 마스터에게 조언을 구하세요
타입 길이를 초과하는 데이터를 입력했기 때문에 cin은 실패 상태가 되어 향후 입력 작업이 수행되지 않습니다. 해당 변수를 초기화하지 않았으므로 모두 임의의 값입니다. 이때 cin.fail()은 true가 됩니다. 계속 입력하려면 cin.clear()가 필요합니다.
Visual Studio를 사용하고 있나요?
입력한 매우 큰 숫자나 문자가 int 유형의 범위를 초과하여 정의되지 않은 동작이 발생합니다.
VS 2015의 C++ int 유형 범위는 -2147483648~2147483647입니다.
오버플로 발생 시 처리 방법은 컴파일러에 따라 다릅니다.
타입 길이를 초과하는 데이터를 입력했기 때문에 cin은 실패 상태가 되어 향후 입력 작업이 수행되지 않습니다.
해당 변수를 초기화하지 않았으므로 모두 임의의 값입니다.
이때 cin.fail()은 true가 됩니다. 계속 입력하려면 cin.clear()가 필요합니다.
Visual Studio를 사용하고 있나요?
입력한 매우 큰 숫자나 문자가 int 유형의 범위를 초과하여 정의되지 않은 동작이 발생합니다.
VS 2015의 C++ int 유형 범위는 -2147483648~2147483647입니다.
오버플로 발생 시 처리 방법은 컴파일러에 따라 다릅니다.