연산자

두개 이상의 값들을 어떤 연산을 처리해주는 것이 연산자입니다.
연산자의 종류는 여러분들이 잘알고 있는 +, - , x, / 와 같은 것들이 있습니다.

레벨2에서는 모든 연산자를 살펴보기보다, 필요한 연산자들만 먼저 알아보겠습니다.
연산자 종류

기호

의미

사용 예

a에 저장되는 값

=

오른쪽 값을 왼쪽으로 저장

a = 10;

10

+

왼쪽과 오른쪽 값을 더함

a = 10 + 10;

20

-

왼쪽 값에서 오른쪽 값을 뺌

a = 10 - 5;

5

*

왼쪽과 오른쪽 값을 곱함

a = 10 * 2;

20

/

왼쪽 값을 오른쪽 값으로 나눈 값

a = 9 / 3;

3

%

왼쪽 값을 오른쪽 값으로 나눈 나머지

a = 10 / 3;

1

>

왼쪽 값이 오른쪽 값보다 큰지 확인

a = 10 > 5;

true

>=

왼쪽 값이 오른쪽 값 이상인지 확인

a = 10 >= 20;

false

<

왼쪽 값이 오른쪽 값보다 작은지 확인

a= 10 < 5;

false

<=

왼쪽 값이 오른쪽 값 이하인지 확인

a = 10 <= 20;

true

==

왼쪽 값과 오른쪽 값이 같은지 확인

a = 10 == 10;

true

!=

왼쪽 값과 오른쪽 값이 다른지 확인

a = 10 != 10;

false

&&

양쪽 모두 참(true)이여야, 참

a = (10==10) && (20==20);

true

||

양쪽 중 하나만 참(true)이면, 참

a = (10==10) && (20==30);

true

!

true면 false로, false면 true로 연산

b = true; a = !b;

false


여러 연산자들이 있지만 주로 사용하는 것들 위주로 표를 작성했습니다.
사칙연산이나 기존 수학기호를 그대로 사용하는 것이 많기 때문에 익숙하실 겁니다.
또한 위 연산자는 숫자에만 적용되는 것이 아니라 변수에도 적용이 됩니다.

그렇다면, 아래의 연산에서는 a 변수에 어떤 값들이 저장될지 생각해보세요.

Q1
int a = 1;
a = a + 1;
Q2
int a = 2;
a = 2 + a * a;
Q2
int b = 10;
float a = b / 3;
Q4
bool a = true;
a = a && !a;
정답
A1 : a는 2 입니다.
A2 : a는 6 입니다.
A3 : a는 3.0 입니다.
A4 : a는 false 입니다.

생각한것과 다른 값이 나온것이 있나요? 아마 두 개 다른 값이 나왔을것이라 예상해봅니다.
보통 Q2는 연산자의 연산순서에 의한 실수가 있었을 것이라 생각합니다.
사칙연산도 덧셈, 뺄셈보다 곱셈, 나눗셈을 먼저해야 하는 것과 마찬가지입니다.
연산자 우선순위

우선순위

연산자

방향

1

() [] -> . ++ –

->

2

sizeof ++ – & ~ ! * + -

<-

3

* / %

->

4

+ -

->

5

>> <<

->

6

> >= < <=

->

7

== !=

->

8

&

->

9

^

->

10

|

->

11

&&

->

12

||

->

13

?

<-

14

= += *= /= %= &= |= <<= >>=

<-

15

,

->

위 표가 연산자 우선순위입니다. 모든 연산자들은 위와 같은 순서로 연산됩니다.
우선순위가 많더라도 겁먹지 마시고 굳이 기억하거나 외울 필요는 없습니다.
필요할 때 찾아보시면 되고, 연산이 헷갈려서, 값이 다르게 나올 것 같으면 괄호를 이용해서 순위를 먼저 지정해줍니다.
이런 순서로 되어 있구나 라고 슬쩍 보시고 넘어가시면 됩니다.

생각한 것과 다르게 나온 것이 Q3 일 겁니다.
Q3는 실수 자료형에 float 자료형에 b/3 계산 값을 초기화(처음 값 저장)하는데 당연히 3.33333… 이 아닌가? 라고 생각하셨을 수 있습니다.
하지만 ‘b/3’ 연산이 먼저 진행 됩니다. 여기 분자 b는 실수가 아니라 정수임으로 b/3 은 정수로 결과값이 나옵니다. (분자가 실수면, 분모가 정수라도 실수 값이 계산됨)
a에 3.3333.. 값이 될려면 아래와 같이 작성되어야 합니다.

1int b = 10;
2float a = b;
3a = a/3;