brunch

You can make anything
by writing

C.S.Lewis

by Moai Sep 09. 2020

C++ 입출력

사칙연산을 할 수 있는 계산기 프로그램을 만들어보자. 우선 입출력에 대해 알아야 하는데 아래 그림을 보자


C언어를 처음 공부할 때 이 부분에서 책을 덮었다. 교수님은 이 코드에 대해 설명을 해주지 않고 암기를 강요했다. 암기보단 이해를 통해 공부를 하는 스타일이다 보니 흥미를 잃어버렸다. 시간이 지나 대학교 4학년이 되었고 전자전기공학부와 컴퓨터공학과를 복수전공하고 수많은 전공을 듣고 나서야 저 구문이 이해가 됐다.


간단히 설명해보자면 옛날에는 기술이 발전하지 않아 프로그래밍 언어가 사용자보단 컴퓨터에 친화적이었다. 컴파일러가 컴퓨터 언어(기계어)로 바꾸기 가장 적합한 표현방식이라고 생각하자. 이해하기 위해선 컴퓨터의 동작 방식을 모두 이해해야 한다. 우리는 C++을 간단히 공부하다가 바로 Python으로 넘어갈 예정이므로 자세한 설명은 패스하도록 하겠다.


잠깐! 매번 위를 보면 std::cout을 사용하지 않고 바로 cout을 사용했다. 그 이유는 #inlcude <iostream> 아래에 using namepsace std; 을 썼기 때문인데 cout을 사용하면 똑똑한 컴파일러는 알아서 std라는 네임스페이스(묶음 또는 패키지라고 생각하면 됨)에 있는 cout을 사용했을 것이라 생각한다. 여기서 endl은 end line의 줄임말로 개행(한 줄을 건너 뜀)을 하라는 의미 한다.


iostream에서 cout (console output의 줄임말)이 출력을 담당했다면 입력은 누가 담당할까

out의 반대는 in이므로 cin (console input의 줄임말)이 입력을 담당한다. cin을 통해 2개의 숫자를 입력받고 사칙연산 후 결과를 출력하는 프로그램을 만들어보자.


위처럼 코드를 작성한 뒤 상단 디버그 메뉴의 디버그 하지 않고 시작(컨트롤+F5)을 입력하자. 프로그램이 실행되고 나면 [10 스페이스 2 엔터]를 차례대로 입력해보자. cin은 엔터나 스페이스, 탭과 같은 공백 키를 누르기 전까지 값을 입력받는다. cout은 << 로 입력받았는데 cin은 입력을 >> 로 입력받을까?  그렇게 개발자가 구현했기 때문이며 큰 의미는 없다. cout은 출력할 문자열을 받아야 하지만 cin은 반대로 입력받은 값을 x와 y에게 값을 전달해주어야 하기 때문에 방향이 바뀌었다고 생각하자.


첫 줄의 int x, int y는 다음 글에서 설명하겠다.


팁: 디버깅하지 않고 시작을 눌렀는데 창이 종료된다면 다음과 같이 설정해보자










매거진의 이전글 C++ Hello World
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari