-
아주 쉽게 배우는 C++ [chapter. 2 연산자_(기본 연산자)]C++ 2023. 1. 13. 12:42반응형
연산자의 경우 쉽다면 아주 쉬운부분이나 계속 하는 이야기인 기초가 가장 중요하다.
그렇기 때문에 나는 연산자를 총 4가지로 나누어 설명할 것이다.
기본연산자. 관계연산자. 비트연산자. 로 나누어 설명할것이고
전부 챕터를 나누어 보다 쉽게 찾을 수 있게 정리할 것이다.
오늘은 가장 기초인 기본연산자를 알아보자
기본적으로 +, -, /, * 는 사람이라면 충분히 암산이 가능하지만 컴퓨터는 멍청하다.
스스로 생각을 못하기 때문에 프로그래밍을 통해 알려 주어야만 한다.
간단한 코드를 하나 봐보자
#include <iostream> using namespace std; int main() { int a = 5, b = 7; int answer; answer = a + b; cout << "a+b= " << answer<<'\n'; answer = a - b; cout << "a-b= " << answer << '\n'; answer = a * b; cout << "a*b= " << answer << '\n'; answer = a / b; cout << "a/b= " << answer << '\n'; }
기본적인 사칙연산을 하는 코드다 결과는 다음과 같다.
여기서 answer를 따로 선언을 한 이유는 한개의 변수는 무조건 한개의 값만 가질 수 있다.
예를들어 이전 포스팅에서 변수는 집이라고 했다.
변수 answer가 예를 들어 "a123b" 의 주소를 가지고 있다고 가정하면
위의 주소에 또 answer를 제외한 또다른 변수가 있을 수 있는가? 정답은 없다.
그렇기 때문에 변수는 한 주소에 대해 한가지 값만 가질 수 있다.
나중에 포인터를 하면서 주소에 대해 더 정확하게 설명할것이니 일단 넘어가자.
그러면 이제 형식이 나왔다.
"A : 변수" = "B : 변수" + "C : 변수";
이런 흐름으로 넘어간다........
사실 변수가 아닌 임의의 값을 넣어도 상관 없다. 예를들면
#include <iostream> using namespace std; int main() { int a = 5; int answer; answer = a + 2; cout << "a+b= " << answer<<'\n'; answer = a - 2; cout << "a-b= " << answer << '\n'; answer = a * 2; cout << "a*b= " << answer << '\n'; answer = a / 2; cout << "a/b= " << answer << '\n'; }
이런식으로도 가능하다.
그런데 뭐가 좀 이상하다.
a/b=0으로 출력된다. 실제 계산기를 사용하여 출력을 해보면
0.7142가 나온다....... 이전 포스트를 보았다면 어떤 문제인지 바로 알 수 있다.
바로 명시적 형 변환을 해주지 않아 발생한 문제다.
위같이 명시적 형 변환을 해주지 않으면 컴퓨터는 자동적으로 암시적 형 변환을 시도한다.
여기서 암시적 형 변환은 int형 즉 정수형으로 설정된 변수 a, b를 연산하는 과정에서 소수형 즉 float 형태가 나오는걸
그대로 bit에 기록을 해야 하지만. int 형으로 선언이 되었기 때문에 출력도 정수형으로 user 몰래 바꾸어 출력하는것이다.
하지만 위의 경우에는 앞의 포스트와 동일하게 (float)을 출력에 붙여도 0으로 반환한다.
그 이유는 a/b 연산을 하고 그걸 특정 변수에 덮어 씌우는 과정이 추가가 되었기 때문에
덮어 씌우는 과정에서 0으로 반환을 해버린다. 왜냐? 정수부가 0이기 때문이다.
이를 해결하기 위해서는 아주 단순하게 생각하면 된다. 출력문에서도 연산이 가능하다!
cout << "a/b= " << (float)a/b << '\n';
마지막 부분을 이렇게 바꾸어주면 계산기의 결과와 동일하게
계산결과가 나온다. 이건 근데 소수점 6자리까지 밖에 출력이 안되었다. 이를 해결하는 방법은 iostream에 있는
명령어를 사용하면 된다.
cout << fixed; <------- 고정소수점으로 설정
cout.precision(10); <------소수점을 10번째 자리까지 출력이걸 출력할 위치의 바로 위에 적어주면 된다. 그럼 다시 출력을 해보자.
정상적으로 잘 출력되는걸 확인할 수 있다.
아 위에서 설명 안한것이 있는데 우리가 손으로 나눗셈을 하면 나머지가 몫과 나머지로 나눌 수 있는데
이때의 나머지를 표시하는 연산자는 %이다.
다음으로 치환연산자다.
치환 연산자란 무엇인가? 말 그대로 값을 치환하여 저장하는 기능이다.
이건 이론이 아닌 실제로 보는게 더 이해가 빠를것 같다.
#include <iostream> using namespace std; int main() { int a = 5; int answer; a += a; cout << a << '\n'; }
여기서 보면 += 이라는 연산자를 사용했다. 이것의 의미는 오른쪽에 있는 값을 자기자신과 더해서
자기 자신한테 덮어 씌우겠다! 이뜻이다.
계산 Flow를 적어보자면 a+=a; ->a=a+a; 와 동일하다.
우변에 숫자를 넣어도 똑같다.
a+=5; ->a=a+5;
무조건 자기자신과만 연산하는 그런 연산자다.
뭐 += 뿐만 아니라 *=, /=, -=, %= 다 같은 역할을 한다.
다음에는 관계연산자와 논리연산자에 대해 알아보자
반응형'C++' 카테고리의 다른 글
아주 쉽게 배우는 C++ [chapter. 4 연산자_(비트 연산자)]C++ (2) 2023.02.01 아주 쉽게 배우는 C++ [chapter. 3 연산자_(관계 연산자)] (0) 2023.02.01 아주 쉽게 배우는 C++ [chapter. 1 변수] (0) 2023.01.12 아주 쉽게 배우는 C++ [chapter. 0] (0) 2023.01.12