나 개발자 진짜 되냐?

[ C# 기본 문법 6 ] 연산자 종류와 연산자 우선순위 본문

C# 을 맛보았어요!/문법정리를 해보았어요!

[ C# 기본 문법 6 ] 연산자 종류와 연산자 우선순위

Snow Rabbit 2024. 9. 19. 18:28

 

 

연산자를 공부해 보자!

 

연산자는 정말 다양하고 많다.


 [ 1 ]

산술연산자

 

뭐 숫자를 대상으로 진행하며

우리가 알고 있는


+ 덧셈

- 뺄셈

* 곱셈

/ 나눗셈


이 있고

특별한 건 %

이 친구는 나머지라는 뜻으로

 

8 / 4 = 2

8 % 4 = 0

 

인 차이가 있다.

 

코드는

Console.WriteLine(num1 + num2);

 

 [ 2 ]

관계연산자

 

두 값을 비교해서

또는 거짓을 반환

 


== 같다

!= 다르다

> 크다

< 작다

>= 크거나 같다

<= 작거나 같다


 

특이한 점은 다르다는 뜻이

! 인 점이다.

 

컴퓨터에서! 는 보통 반대!

라는 느낌으로 기억해 주면 좋다.

 

 

코드는

Console.WriteLine(num1!= num2);

 

 

[ 3 ]

논리연산자

 

얘들은  또는 거짓을 대상으로 사용된다.

 


&& 논리곱

( AND )

둘 다 참일 때만

둘 중 하나만 이면 거짓

둘 다 거짓이면

 

|| 논리합

( OR )

둘 다 이면 거짓

둘 중 하나만 참일 때

둘 다 거짓이면  거짓

 

! 논리부정

이면 거짓

거짓이면


 

이 친구는 코드가 어려워서 다 써보자

Console.WriteLine(0 <= num1 && num1 <= 20);

0과 20 사이에 포함된다면

둘다 이면!

 

Console.WriteLine(0 <= num1 || num1 <= 20);

0과 20 사이에 포함되지 않으면

둘다 거짓이여야지만 거짓

하나만 이어도 !

Console.WriteLine(! (0 <= num1 && num1 <= 20) );

0과 20 사이에 포함되지 않으면

 

바로 위에 코드랑 동일하다!

느낌표를 이렇게 쓴다는 것을 위한 코드였다!

 

 


 

연산자 중에서도

비트연산자라는 친구가 있다.

 

이 친구는 2진수 연산으로

0과 1로만 이루어져서 연산이 된다.

 

[ 4 ]

비트연산자

 

 

& (AND)
두 비트 값이 모두 1일 때 1을 반환

| (OR)
두 비트 값 중 하나라도 1일 때 1을 반환

^ (XOR)
두 비트 값이 서로 다를 때 1을 반환

~ (NOT)
비트 값의 보수(complement)를 반환

int a = 0b1100; // 12 (2진수)
int b = 0b1010; // 10 (2진수)

int and = a & b; // 0b1000 (8)
int or = a | b; // 0b1110 (14)
int xor = a ^ b; // 0b0110 (6)


2진수도 다양하게 표현된다.

0b는 2진수라는 뜻을 나타낸다.

 

~

물결은

NOT을 의미하며

컴퓨터에서는 보수라고 부른다.

간단하게

반대라고 생각해 주면 된다

 

1010 이면

0101이 된다.

[ 5 ]

시프트 연산자

 

<< (왼쪽 시프트)
비트를 왼쪽으로 이동

>> (오른쪽 시프트)
비트를 오른쪽으로 이동

 

 

int c = 0b1011; // 11 (2진수)
int leftShift = c << 2; // 0b101100 (44)
int rightShift = c >> 1; // 0b0101 (5)

int d = 0b1100; // 12 (2진수)
int bit3 = (d >> 2) & 0b1; // 1 (3번째 비트)
d |= 0b1000; // 0b1100 | 0b1000 = 0b1100 (12)
​

 

새로운 친구 등장!

 

<<

>>

이 친구들은 시프트라고 해서

옮겨주는 친구들이다.

 

 

예시로 1011 이니까

왼쪽 두 칸은

화살표도 < 이쪽이지만

 

반대로 가줘야 한다.

숫자는 오른쪽에서 왼쪽으로 커지기 때문..!

 

그래서 오른쪽 방향으로 두 칸 가야 한다

그러면 두 칸 가면 1011/00 가게 된다

 

간 자리는 0으로 채우면 된다.

 

마찬가지로

>> 이거는

 

화살표 자체가

오른쪽으로 가는 방향이지만

 

오른쪽에서 왼쪽으로 커지기 때문에

제일 작은

오른쪽 친구부터 지워주어야 한다.

 

맨뒤에 자리를 지워주면 된다.

 

101/1

이렇게 되면서 1은 아예 지워지고 101만 남게 된다.

[ 6 ]

복합 대입 연산자

 

변수를 더 편리하게 더하고 뺄 수 있는 친구!

 

특히

저 친구를 나 자신에게 더해서

그 값으로 나 자신을 업그레이드하고 싶은데

할 때 쓰는 것!

 

연산자 예시 설명
+= x += y; x = x + y;
-= x -= y; x = x - y;
*= x *= y; x = x * y;
/= x /= y; x = x / y;
%= x %= y; x = x % y;

 

생소하죠..

+=는

+ 랑 = 을 합친 것으로

앞에 값을

뒤의 값이랑 더해서

앞에 값에 넣어준다.라는 뜻입니다!

 

밑에 친구들도 마찬가지!!

[ 7 ]

증감 연산자

 

++

1씩 증가

 

--

1씩 감소

 

꽤나 간단한 친구들이 있네요.

 

 

생긴 건 간단하지만

이 친구의 위치에 따라 달라져요

 

코드는 왼쪽에서 오른쪽으로 읽기 때문에

++x 는

++을 만난 후에 x를 만난다.

 

전위형이라고 불리며

더해진 값이 x에 들어가져서 사용된다.

 

하지만 x++ 은

x값을 쓰고 난 후 ++가 진행된다.

 

그래서 x++; 일경우

x는 이미 값이 나오고

; 다음부터

++가 계산된다.

 

이 친구를 우리는 후위형이라고 한다.

 


이런 모오오오오오든 연산자들은 우선순위가 있다.

 

어딜 가나 서열이 있듯..

연산자들도 우선순위가 있다는 뜻!

 

높은 우선순위가 먼저 계산되며

 

사칙에서도 곱셈과 나눗셈이

덧셈 뺄셈보다 먼저 계산되는 거랑

같은 원리다.

 

0.

 괄호 ()

 

1. 단항 연산자

++ -- !

 

2. 산술 연산자

* / % + -

 

3. 시프트 연산자

<< >>

 

4. 관계 연산자

< > <= >= == !=

 

5. 논리 연산자

&& ||

 

6. 할당 연산자

= += -= *= /=

 

가 있다.

 

이 순서는 잘 기억해 두도록 하자!