연산자는 우리가 흔히 아는 + - / *같은것이 있습니다
그 이외에도 많은 연산자가 있으니 하나씩 알아볼까요?
우선 '변수'에 대해 충분히 공부하신 후 읽어보셔야 도움이 될 것 같습니다
연산자 명 | 연산자 | 설명 |
덧셈 연산자 | + | 좌항에서 우항을 더한값을 반환 |
뺄셈 연산자 | - | 좌항에서 우항을 뺀 값을 반환 |
곱셈 연산자 | * | 좌항에서 우항을 곱한값을 반환 |
나눗셈 연산자 | / | 좌항에서 우항을 나눈값을 반환 |
나머지 연산자 | % | 좌항에서 우항을 나눈 나머지를 반환 |
할당 연산자 | = | 좌항 변수에 우항의 값을 할당 |
덧셈 할당 연산자 | += | 좌항의 변수에 우항의 값을 더함 |
뺄셈 할당 연산자 | -= | 좌항의 변수에 우항의 값을 뺌 |
곱셈 할당 연산자 | *= | 좌항의 변수에 우항의 값을 곱함 |
나눗셈 할당 연산자 | /= | 좌항의 변수에 우항의 값을 나눔 |
나머지 할당 연산자 | %= | 좌항의 변수에 우항의 값을 나눈 나머지를 할당 |
같음 연산자 | == | 좌항의 값과 우항의 값이 같다면 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 |