연산자(operator)
프로그래밍 언어의 연산자는 거의 대부분 비슷합니다.
대입연산자, 산술연산자, 비트연산자, 관계 연산자 논리연산자 모두 C언어와 동일합니다.
연산자는 달리 말하면 수식 기호라고도 합니다. +, -, *(곱하기), /(나누기), %(나머지) 등 많은 기호들이 존재합니다.
그리고 연산자 종류도 꽤 많은 편이라서 여러분들이 이것을 일일이 암기하기엔 무리가 있고 실습을 하면서
몸으로 느끼시는게 정신건강에 이롭다고 알려드리고 싶습니다.
대입연산자 =
대입 연산자라 함은 오른쪽의 값을 왼쪽의 변수에 대입하는 연산자입니다.
쉽게 설명 드리면 a = 5 라는 코드가 있다면 a와 5 사이의 = 라는 수식기호는 대입 연산자로 변수 a에 5를 넣어주는 역할을 하는 것입니다.
주의할 점은 둘은 같다라는 의미가 아닌 오른쪽의 값이 왼쪽에 대입된다라고 이해해주셔야 합니다.
산술 연산자 +, -, *, /, %
산술 연산자는 말그대로 계산을 담당하는 연산자입니다.
*는 곱하기 /는 나누기 %는 나누기 이후 나머지를 가리키는 기호입니다.
여러분이 주의하셔야 할 것은 a + 5; 와 같은 코드는 작동하지 않는다는 것입니다. 만약 a 자체에 특정 값을 더해주고 싶다면 a = a+5; 또는 아래의 복합 대입 연산자를 사용하여야 합니다.
복합 대입 연산자 +=, -=, *=, /=, %=
복합 대입 연산자는 대입 연산자와 산술 연산자를 서로 합친 것이라 생각하면 쉽습니다.
가령 a = a+5 라는 코드가 있다고 하면 이 코드는 a +=5와 완전히 의미가 같은 코드입니다.
두 코드 모두 a 자체에 값을 더하는 개념입니다.
[*= /= %=] 는 산술연산자에서 배웠던대로 각각 [곱하기 나누기 나머지] 입니다.
증감 연산자 ++, --
증감 연산자는 각 변수의 값을 1씩 증가 또는 감소시킵니다.
증감연산자는 간단히 a++; 등으로 사용할 수 있습니다. 여기에 중요한 개념이 있는데 증감연산자는 변수의 어느 위치에 붙느냐에 따라서 그 수행 방식이 완전히 달라진다는 것입니다.
예를 들어
-
printf("%d", a++); // a의 값을 먼저 출력한 뒤에 a 값을 증가시킨다
-
printf("%d", ++a); // a의 값을 먼저 증가시킨 뒤에 a 값을 출력시킨다
이 둘은 서로 다른 내용입니다. 예를 들어 a가 5라고 하면, 첫번째 코드는 5가 출력된 이후에 a의 값이
6으로 바뀔 것입니다. 두번째 코드는 a의 값이 먼저 증가되기 때문에 출력값이 6이 될 것입니다.
--의 경우는 ++와 반대로 1을 빼주는 개념이고 이 역시 위치에 따라 그 수행 방식이 다릅니다.
관계 연산자 >, <, ==, !=, >=, <=
관계 연산자의핵심은 참이냐 거짓이냐를 따져 1 또는 0을 반환하는 연산자입니다.
예를 들어 result = (a < b); 라는 코드가 있고 a에 저장된 값이 b보다 작다면(즉 위 코드가 참이라면)
a에는 1이 대입됩니다.
여기서 각 연산자의 의미를 설명하자면
-
> 연산자를 기준으로 왼쪽의 값이 오른쪽보다 크다면 1을 그렇지 않다면 0을 반환한다.
-
< 연산자를 기준으로 왼쪽의 갑싱 오른쪽보다 작다면 1을 그렇지 않다면 0을 반환한다.
-
== 연산자를 기준으로 양쪽의 값이 같다면 1을 그렇지 않다면 0을 반환한다.
-
!= 연산자를 기준으로 양쪽의 값이 서로 같지 않다면 1을 그렇지 않다면 0을 반환한다.
-
>= 연산자를 기준으로 왼쪽의 값이 오른쪽보다 크거나 같다면 1을 그렇지 않다면 0을 반환한다.
-
<= 연산자를 기준으로 왼쪽의 값이 오른쪽보다 작거나 같다면 1을 그렇지 않다면 0을 반환한다.
위와 같습니다.
조금 뒤에 설명할 제어문에서 이 관계 연산자가 특히 자주 쓰입니다. 하지만 그만큼 제어문에서의 관계 연산자의 사용은 초보 개발자분들이 많이 실수하시는 부분이기도 합니다.
논리 연산자 &&, ||, !
논리 연산자는 AND OR NOT으로도 불립니다.
-
&&(AND) 연산자를 기준으로 양쪽 값 중 하나라도 거짓이면 거짓을 반환한다.
-
||(OR) 연산자를 기준으로 양쪽 값 중 하나라도 참이면 참을 반환한다.
-
!(NOT) 결과가 참이면 거짓을 반환하고, 거짓일 경우 참을 반환한다.
여러분들에겐 세번째 NOT의 개념이 상당히 와닫지 않으실 것입니다.
하지만 지금은 그냥 지나가세요. 추후 제어문을 배울때 상당히 자세히 설명해드리겠습니다.
그리고 하나 빼먹을 뻔 했는데 왼쪽에는 변수가 오른쪽에는 값이 와야한다는 것이 기본 개념이지만
이 값이란 놈은 변수가 될 수도 있습니다.
즉 a=b; 와 같은 코드가 성립하는 이유는 b에 저장된 값이 a에 대입된다 라는 의미로 해석될 수 있습니다.
맺음말
사실 위의 연산자들 외에도 삼항 조건 연산자 비트 연산자 등 몇 개가 더 있습니다.
하지만 이런 연산자들은 나중에 다루기로 하고 일단은 연산자에 대한 설명을 여기서 마치도록 하겠습니다.