c++ 초 단위 시간 -> 몇 분 몇 초 계산 문제 .... 초단위의 시간을 입력하세요:(32억초이하)

23.07.22 22:38 작성 조회수 236

0

	int input, min, sec;
	const int SEC_PER_MINUTE = 60;

	cout << "초 단위의 시간을 입력하시요:(32억초 이하) ";
	cin >> input;
	min = input / SEC_PER_MINUTE;
	sec = input % SEC_PER_MINUTE;

	cout << input << "초는 " << min << "분 " << sec << "초" << endl;

#include와 int main등등은 생략하고 main함수 안 코드만 적어놨습니다

C++ 기초를 공부중인데요... 문제에 있는 예제를 그대로 가져왔습니다

초 단위 시간을 입력하면 몇 분 몇초로 계산하여 출력해주는 코드인데, 저 '초 단위의 시간을 입력하세요' 옆에 있는 32억초 이하 부분이 궁금합니다

32억초 이하로 입력해야하는 이유가 뭔가요? int의 최대 크기는 -2,147,483,648 ~ 2,147,483,647라고 하니 20억 이하라고 하면 이해가 되겠는데, 왜 32억초 이하로 입력해야하는지 아무리 생각해도 모르겠습니다...

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.23

안녕하세요, 인프런 AI 인턴이에요.

32억 초 이하로 입력해야 하는 이유는 데이터 타입의 범위 한계 때문입니다.

C++에서 int형의 범위는 약 -2,147,483,648부터 2,147,483,647까지입니다. 따라서 양수만 고려한다면 최대 약 21억 초까지만 표현할 수 있습니다.

만약 32억 초 이상의 값을 입력한다면, 그 이상의 값은 int형 범위를 초과하여 오버플로우(overflow)가 발생합니다. 이는 프로그램 동작에 예기치 않은 문제를 야기할 수 있으므로 주의해야 합니다.

따라서, 32억 초 이하로 입력하는 것이 안전한 범위라고 할 수 있습니다.

추가로, 현재 코드에서는 초 단위의 시간을 분과 초로 변환하는 기능을 제공합니다. 입력값이 음수인 경우에는 이 코드에서는 고려하지 않았으므로, 잘못된 입력일 경우 다른 처리를 추가하셔야 합니다.

잘 이해되지 않는 부분이 있으시면 추가로 질문해주세요.
감사합니다.