안녕하세요! 코딩하는 경제학도 쏘코입니다.
오늘은 각종 표현법에 대해서 알아보는 시간입니다!
목차
0. 기본 연산자
우리가 현실 세계에서 각종 연산을 하는 것처럼, 당연히 컴퓨터도 연산을 할 수 있습니다.
연산을 할 때는 연산자와 피연산자의 관계를 봐야하는데, 어떤 연산자는 피연산자 2개를 필요로 하고 (1+2), 어떤 연산자는 피연산자 1개만 있으면 가능한 경우도 있습니다. (-1) 삼항연산자처럼 3개의 항이 필요한 연산자도 있구요. (a == true ? 1 : 2)
너무 복잡한 내용은 뒤로 사고, 가장 기초적인 내용부터 살펴보겠습니다.
+, -, *, /, %(modulo) 연산은 모두 이항연산자입니다. 항이 2개가 필요하죠.
음수를 표현하는 -는 단항연산자입니다. 항이 1개가 필요합니다.
?는 삼항연산자인데, 앞 조건이 true면 :를 기준으로 앞이 반환되고, false면 뒤가 반환됩니다.
또한 이항연산자의 경우 대부분 같은 타입끼리만 연산이 가능합니다. 이 부분에서 어긋난다면 형변환을 해주거나 별도의 조치를 취해야겠죠. 함수 내부 수정이 필요한데, 지금 배운것으로는 설명할 수 없으니 우선 넘어가도록 하겠습니다.
아래 사진에서 Associativity는 연산 순서를 뜻합니다. left면 왼쪽에서 오른쪽으로 연산되고, right면 오른쪽에서 왼쪽으로 연산되죠. left는 일반적인 경우니 right만 살펴보면, int a = 3이라는 식의 경우, 3이 a에 할당됩니다. 연산 순서가 오른쪽에서 왼쪽으로 가죠? 사실 엄청나게 중요한 부분은 아니기 때문에 감각적으로 알고 넘어가시면 되겠습니다.
추가로, 이러한 연산을 할 때 사용자로부터 값을 받아야 하는 경우가 있습니다.
이전 포스팅에서 cout에 대해서 간략하게 다루고 넘어갔죠?
출력할 때 사용하는 건 cout이고, 반대로 컴퓨터에 무언가를 입력할 때 사용하는 건 cin입니다.
out과 in의 차이를 생각하신다면 좀 더 쉽게 이해가 될 것입니다.
사용법은 cout과 정확히 동일합니다. 대신 cout는 <<를 사용하고 cin은 >>를 사용합니다.
위 내용을 조합해서 간단한 프로그램을 만들어볼 수 있습니다.
화씨 온도를 섭씨 온도로 바꾸는 것인데, 아주 흔한 예시이기에 보시면 바로 이해하실 수 있을 것입니다.
1. 기타 표현식
코딩을 하다보면 주석처리를 하고 싶을 때가 있습니다.
매번 따로 설명서를 작성하는 것보다 코드 옆에 바로 설명을 달면 좀 더 이해하기 편하겠죠?
이럴 때 사용하는 것이 바로 주석입니다.
만약 한 줄을 주석처리 하고 싶다면 주석처리 하고싶은 말 앞에 // 를 붙이면 되고,
만약 여러 줄을 주석처리 하고 싶다면 주석 처리를 할 부분 앞 뒤로 /* */를 붙이면 됩니다.
VS의 경우 ctrl+k+c를 누르면 주석 단축키를 사용할 수 있습니다.
반대로 주석을 푸려면 ctrl+k+u를 하시면 됩니다.
외우기 빡세보이지만 하다보면 몸이 기억합니다..
다음 표현식은 Formatting입니다.
C++는 파이썬과 다르게 우리의 엔터를 정상적으로 인식하지 않습니다.
실제로 엔터가 아닌 ;표시로 문장구분을 합니다
이게 코드를 간단하게 표현할 수 있게 해주면서도 보기 어렵게 만들기도 합니다.
되도록이면 들여쓰기를 잘 지켜서 작성하면 오류를 찾기 쉽겠죠?
2. 연산자 고급편
우리가 일반적으로 사용하는 연산자에서도 더 단축을 시키고 싶은 사람이 있었나봅니다.
그래서, 더 짧게 사용할 수 있는 좋은 연산자를 만들어 냈습니다.
+=, -=, *=, /=, %=
이 친구들은 자기 자신을 1번만 작성해도 되도록 해 주는 연산자들입니다.
바로 실전 예시로 설명해보죠.
a에 2씩 더해지는 케이스를 만들기 위해
a = a + 2;
라는 코드식을 만들었습니다. a가 2번 반복되었죠? 이게 귀찮아서
a += 2;
로 줄여쓸 수 있도록 만들었습니다.
지금은 왜 사용하는지 잘 이해가 되지 않을 수 있지만, 쓰다보면 굉장히 편리해서 자주 사용하게 됩니다.
또한, 1씩 더해주는 경우에는 더욱 특별한 경우이고 자주 쓰이는 경우이기 때문에
++ -- 등의 기호를 2번 붙여주는 것 만으로도 사용할 수 있도록 하였습니다.
a = a + 1;
a += 1;
++a;
모두 같은 말이라는 것이죠.
여기서 prefix(전치)와 postfix(후치)의 차이가 등장합니다.
prefix는 ++x(--x)이고 postfix는 x++(x--)인데,
prefix의 경우 위의 예시와 같이 바로 1이 증가(감소)하고,
postfix는 그 줄의 연산이 모두 끝나고 나서 변수에 1을 증가(감소)시킵니다.
이 부분에 대한 보다 자세한 내용은 예전에 포스팅해둔 자료에서 다루고 있으니 조회수도 늘려주실 겸 참조해주시면 감사하겠습니다 :)
ssocoit.tistory.com/51?category=920467
또한 비트연산자라는 것도 있습니다.
이전에 컴퓨터는 0과 1로 구성된 요소들로 문자나 숫자를 인식한다고 했죠?
여기서 0과 1이 하나의 비트인데, 이것들을 조작해주는 그런 연산자라고 보시면 되겠습니다.
&은 and, |은 or, ^는 xor, ~는 not을 의미합니다. (이 부분은 지금은 다루지 않도록 하겠습니다. 이산구조 내용..)
또한 >> << 는 시프트 연산자로, 비트의 위치를 전부 그쪽 방향으로 이동시킵니다.
이 비트연산자들도 &= 등으로 줄여서 쓸 수 있습니다.
비트연산자는 사용하기 어렵지만, 잘만 사용하면 연산시간도 획기적으로 줄일 수 있기도 하고, 인간컴퓨터라는 소리를 들을 만큼 존경을 받으실 수도 있습니다(?)
(간혹 코테 문제 해결할때 이걸 사용하셔서 비트의 신이라며 칭송을 받는 분들이 있습니다 ㅋㅋㅋㅋㅋㅋ)
최근댓글