본문 바로가기

공통

연산자

연산자는 우리가 흔히 아는 + - / *같은것이 있습니다

그 이외에도 많은 연산자가 있으니 하나씩 알아볼까요?

우선 '변수'에 대해 충분히 공부하신 후 읽어보셔야 도움이 될 것 같습니다

 

연산자 명 연산자 설명
덧셈 연산자 + 좌항에서 우항을 더한값을 반환
뺄셈 연산자 - 좌항에서 우항을 뺀 값을 반환
곱셈 연산자 * 좌항에서 우항을 곱한값을 반환
나눗셈 연산자 / 좌항에서 우항을 나눈값을 반환
나머지 연산자 % 좌항에서 우항을 나눈 나머지를 반환
할당 연산자 = 좌항 변수에 우항의 값을 할당
덧셈 할당 연산자 += 좌항의 변수에 우항의 값을 더함
뺄셈 할당 연산자 -= 좌항의 변수에 우항의 값을 뺌
곱셈 할당 연산자 *= 좌항의 변수에 우항의 값을 곱함
나눗셈 할당 연산자 /= 좌항의 변수에 우항의 값을 나눔
나머지 할당 연산자 %= 좌항의 변수에 우항의 값을 나눈 나머지를 할당
같음 연산자 == 좌항의 값과 우항의 값이 같다면 1, 틀리면 0 반환
관계 연산자 >= 좌항의 값이 우항의 값보다 크거나 같다면 1, 작으면 0 반환
관계 연산자 <= 좌항의 값이 우항의 값보다 작거나 같다면 1, 크면 0 반환
관계 연산자 > 좌항의 값이 우항의 값보다 크면 1, 작거나 같으면 0 반환
관계 연산자 < 좌항의 값이 우항의 값보다 작으면 1, 크거나 같으면 0 반환
다름 연산자 != 좌항의 값과 우항의 값이 다르다면 1, 같다면 0 반환
증가 연산자 ++ 좌항의 변수에 1을 증가
감소 연산자 -- 좌항의 변수에 1을 감소

이게 기본적인 연산자 라고 보시면 됩니다

중요한점은 우리가 수학 계산하듯이 항상 ( 괄호 -> 곱셈,나눗셈 -> 덧셈,뺄셈) 순으로 계산됩니다.

자 근데 +와 +=의 차이가 헷갈리실수도 있는데요

아래 코드를 보시죠

int n = 10;
int n2 = 20;
n + n2;

이렇게하면 결과는 어떨까요?

이 코드를 실행 한 후 n과 n2의 변화는 없습니다

n과 n2는 이 프로그램이 돌고 난 후에도

n에는 10 , n2에는 20이 들어있게 됩니다.

그 이유는 n + n2를 했을 뿐 그 결과를 어디에도 할당하지 않았기 때문이죠

그럼 우리는 n에다가 n + n2를 한 값을 할당 하고 싶다고 합시다.

int n = 10;
int n2 = 20;
n = n + n2;

이렇게 하면 될것같죠? 맞습니다. 하지만 또 다른 방법이 있는데요

int n = 10;
int n2 = 20;
n += n2;

이렇게 하면 n에다가 n2의 값을 더한다 라는 뜻이 되어 결과적으로 n에 n + n2한 값

즉 30이 들어있게됩니다

 

다른건 다 알겠는데 처음보는 연산자가있어요.. %이건 뭐죠??

%는 나머지 연산자입니다. 우리가 초등학교때 나눗셈을 어떻게 배웠죠?

10 나누기 3은 3.3333333이렇게 배웠나요? 아니죠

10 나누기 3은 몫은 3이고 나머지는 1이다 라고 배웠습니다

그 나머지를 알려주는 연산자 라고 보시면 돼요

단! 정수에서만 쓸수 있다는것만 알아주세요

실수에서는 사용할수 없습니다

 

전혀 쓸데 없는것같은데 어디서 쓸까요?

보통 랜덤으로 숫자를 뽑을때 만약 100을 넘기지 않게하고싶다

그럼 랜덤으로 뽑은수에 % 100 하면 0~99의 수가 되겠죠?

아니면 어떤수가 짝수인지 홀수인지 알고싶다

어떤수에 %2했을때 결과가 0이면 짝수 1이면 홀수가 되는거죠

 

자 그럼 이번에는 증감연산자 라고 부르는 ++와 --에 대해 알아보겠습니다

++와 --는 쓰는 방법이 두가지가 있는데요

++변수이름;

변수이름++;

이렇게 두가지 방법으로 쓸수 있습니다. 이는 뭐가 다를까요?

++변수이름 이렇게하면 전위증감연산자 라고 부르고

계산이 시작되기전 먼저 1증가시킨다 라는 뜻이고

변수이름++ 이렇게하면 후위증감연산자 라고 부르고

계산이 끝난 후 1 증가시킨다 라는 뜻입니다

 

현업에서 느낀점으로는 크게 구분해서 쓰지는 않는편인것같은데

알아둬야할점이긴 합니다.

int n = 10;
int n2 = n++;

이렇게 하면 n과 n2에는 무슨값이 들어있을까요?

순서대로 따라가 보면 n에는 10이 들어있는 상태에서

n2에 n을 할당합니다만! 중요한점은 후위 증감 연산자입니다.

n2에 먼저 n의 값 10을 할당 한 후

n의 값을 1 증가 시킵니다. 즉 결과적으로는

n은 11, n2는 10이 들어있게 되는거죠

 

그럼 다르게

int n = 10;
int n2 = ++n;

이렇게 해봅시다 차례대로 해볼게요

n에는 10이 들어있고

그 값을 n2에 할당하려 합니다만! 전위 증감 연산자로 할당하기 전에

n에 1을 먼저 증가를 시켜줍니다. 그럼 n은 11이 되고

그 값을 n2에 할당하게 되니 n과 n2모두 11이 되게 됩니다.

 

이외에도 많은 연산자가 있습니다.

아래는 비트 연산자 라고 부르는것들인데요.

비트! 변수에 관한 글을 보고오셨다면 아시겠죠!

연산자 이름 연산자 설명
AND연산자 & 좌항과 우항을 2진수로 바꾼 후 각 자리에 둘다 1이면 1, 둘중 하나라도 1이 아니면 0으로 바꾼값을 반환
OR연산자 | 좌항과 우항을 2진수로 바꾼 후 각 자리에 둘중 하나라도 1이면 1, 아니면 0으로 바꾼값을 반환
NOT연산자 ~ 우항의 모든 비트를 반전한 값을 반환 (00000이었다면 11111반환)
XOR연산자 ^ 좌항과 우항을 2진수로 바꾼 후 각 자리의 수가 같으면 0, 다르면 1로 바꾼 값을 반환
시프트연산자 <<

좌항을 2진수로 바꾼 후 우항의 값만큼 비트를 왼쪽으로 민 값을 반환

(만약 5 << 2 라면, 00000101에서 비트를 왼쪽으로 2칸 민 00010100 반환)

시프트연산자 >>

좌항을 2진수로 바꾼 후 우항의 값만큼 비트를 오른쪽으로 민 값을 반환

(만약 5 >> 2 라면, 00000101에서 비트를 오른쪽으로 2칸 민 00000001 반환)

자주 쓰지는 않지만 외워둬야할 개념이니 꼭 외워주세요!

'공통' 카테고리의 다른 글

버퍼란?  (0) 2019.07.19
주석  (0) 2019.06.26
프로그래밍 표기법  (0) 2019.06.26
전역변수와 지역변수  (0) 2019.06.26
자료형과 실수 오차  (0) 2019.06.24