문풀/백준
[백준] 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;
}
}
}
== 결과 ==
