문풀/백준

[백준] 1000 - A + B

Le마리 2024. 12. 11. 17:31

 

 

 

 

문제

 

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

 

 

 

입력

 

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

 

 

#include <iostream>	// 입력과 출력을 위한 헤더 파일

int main()
{
	int A;
	int B;
	std::cin >> A, B;

	std::cout << A + B << std::endl;

}

 

 

 

 

💡왜 코드가 실행이 안될까?

std::cin >> A,B; 이 부분은 >> 연산자와 쉼표 연산자가 섞여 있다.

  C++에서 쉼표(,)는 순서를 나열하는 연산자로 동작한다. 

  따라서 B는 cin으로 값을 입력받는 게 아니다!

⦁ 이 코드는 이렇게 해석된다.

    1. std::cin >> A  :  A에 입력값을 받아라.

    2. , B : 쉼표 뒤의 B는 그냥 아무 값도 안 들어간 상태로 넘어가라.

 

결과적으로, A는 값을 잘 입력받지만 B는 초기화되지 않고 그대로 남아 있기 때문에, 컴파일러가 "B가 초기화되지 않았다" 는 경고를 내는 것이다.

 

 

 

 

 

올바른 코드

 

#include <iostream>	// 입력과 출력을 위한 헤더 파일

int main()
{
	int A;
	int B;
	std::cin >> A >> B;

	std::cout << A + B << std::endl;

}

 

 

 

== 결과 ==

 

 

 

 

 

 

 

 

 

 


 

 

정답은 아니지만,

 

 

 

▶️ 번외 : 조건이 있을 경우 ⥤ if문 이용

     ( 0 < A, B < 10 )

 

#include <iostream>	// 입력과 출력을 위한 헤더 파일

int main()
{
	int A;
	int B;
	std::cin >> A >> B;

	if (A > 0 && B < 10)
	{
		std::cout << A + B << std::endl;
	}
	else
	{
		std::cout << "범위 내 숫자를 입력해주세요 (1 ~ 10)" << std::endl;
	}

}

 

 

== 결과 ==

 

 

 

 

 

 

 

▶️ 번외 : 조건에서 끝나는 게 아니라 틀리면 다시 입력받고 싶을 경우 ⥤ while문 함께 이용

 

 

#include <iostream>	// 입력과 출력을 위한 헤더 파일

int main()
{
	int A, B;

	while (true)
	{
		std::cin >> A >> B;

		if (A > 0 && B < 10)
		{
			std::cout << A + B << std::endl;
			break;	// 조건을 만족하면 반복문 탈출
		}
		else
		{
			std::cout << "잘못된 입력입니다. 1 ~ 10 사이 숫자를 입력해주세요." << std::endl;
		}
	}

}

 

 

== 결과 ==