뇌를 자극하는 C# 4.0 프로그래밍/ 데이터를 가공하는 연산자

C#에서 제공하는 연산자 둘러보기

분류 연산자
산술 연산자 +, -, *, , %
증가/ 감소 연산자 ++, —
관계 연산자 <, >, ==, !=, <=, >=
조건 연산자 ?:
논리 연산자 &&,
비트 연산자 <<, >>, &, ^, ~
할당 연산자 =, +=, -=, *=, /=, %=,

산술 연산자

연산자 설명 지원 형식
+ 양쪽 피연산자를 더합니다 모든 수치 데이터 형식을 지원합니다.
왼쪽 피연산자에서 오른쪽 피연산자를 차감합니다 모든 수치 데이터 형식을 지원합니다.
* 양쪽 피연산자를 곱합니다 모든 수치 데이터 형식을 지원합니다.
/ 왼쪽 연산자를 오른쪽 피연산자로 나눈 몫을 구합니다 모든 수치 데이터 형식을 지원합니다.
% 왼쪽 연산자를 오른쪽 피연산자로 나눈 후의 나머지를 구합니다 모든 수치 데이터 형식을 지원합니다.

증가 연산자와 감소 연산자

연산자 이름 설명 지원 형식
++ 증가 연산자 피연산자의 값을 1 증가시킵니다 모든 수치 데이터 형식을 지원합니다.
감소 연산자 피연산자의 값을 1 감소시킵니다 모든 수치 데이터 형식을 지원합니다.

문자열 결합 연산자

// 아래와 같이 하면 result에는 123456이 저장된다.
string result = "123" + "456";

관계 연산자

연산자 설명 지원 형식
< 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 참, 아니면 거짓 모든 수치 데이터 형식을 지원합니다.
> 왼쪽 피연산자가 오른쪽 피연산자보다 크면 참, 아니면 거짓 모든 수치 데이터 형식을 지원합니다.
<= 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 참, 아니면 거짓 모든 수치 데이터 형식을 지원합니다.
>= 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참, 아니면 거짓 모든 수치 데이터 형식을 지원합니다.
== 왼쪽 피연산자가 오른쪽 피연산자와 같으면 참, 아니면 거짓 모든 수치 데이터 형식을 지원합니다.
!= 왼쪽 피연산자가 오른쪽 피연산자와 다르면 참, 아니면 거짓 모든 수치 데이터 형식을 지원합니다.

논리 연산자

A B A && B
거짓 거짓
거짓 거짓
거짓 거짓 거짓
A B A || B
거짓
거짓
거짓 거짓 거짓
A !A
거짓
거짓

조건 연산자

// 조건식 ? 조건식이 참일 때의 값 : 조건식이 거짓일 때의 값
// 아래와 같이 하면 result에는 "삼십"이 저장된다.
int a = 30;
string result = a == 30 ? "삼십" : "삼십아님";

// 추가 - 본문엔 없는 연산자. ??
// null 타입에 한정하여 ?과 같은 조건 연산자가 ?? 이다
// 아래 코드에서 result가 null이 아니면 왼쪽의 "널 아님" 이 대입되고, result가 null이면 오른쪽의 "널"이 대입된다.
string result = "널 아님" ?? "널";

비트 연산자

연산자 이름 설명 지원 형식
<< 왼쪽 시프트 연산자 첫 번째 피연산자의 비트를 두 번째 피연산자의 수만큼 왼쪽으로 이동 시킵니다. 첫 번째 피연산자는 int, uint, long, ulong 이며 두 번째 피연산자는 int 형식만 지원됩니다.
>> 오른쪽 시프트 연산자 첫 번째 피연산자의 비트를 두 번째 피연산자의 수만큼 오른쪽으로 이동 시킵니다. 첫 번째 피연산자는 int, uint, long, ulong 이며 두 번째 피연산자는 int 형식만 지원됩니다.
& 논리곱(AND) 연산자 두 피연산자의 비트 논리곱을 수행합니다. 정수 계열 형식과 bool 형식에 대해 사용할 수 있습니다.
| 논리합(OR) 연산자 두 피연산자의 비트 논리합을 수행합니다. 정수 계열 형식과 bool 형식에 대해 사용할 수 있습니다.
^ 배타적 논리합(XOR) 연산자 두 피연산자의 비트 배타적 논리합을 수행합니다. 정수 계열 형식과 bool 형식에 대해 사용할 수 있습니다.
~ 보수(NOT) 연산자 피연산자의 비트를 0은 1로, 1은 0으로 반전시킵니다. 단항 연산자입니다. int, uint, long, ulong에 대해 사용이 가능합니다.

시프트 연산자

비트를 왼쪽이나 오른쪽으로 이동시키는 것.

  • 비트를 왼쪽으로 이동 시키는 경우

  • 비트를 오른쪽으로 이동 시키는 경우

  • 음수의 시프트 연산
    • 음수는 비트를 이동시킨 후 생긴 빈자리에 0이 아닌 1을 채워 넣는다는 점에서 차이가 있다.

  • 시프트 연산 사용 방법

  • 시프트 연산의 원본 데이터를 a, 옮긴 비트 수를 b라고 할 때, 왼쪽 시프트 연산을 하면 a x 2b의 결과가, 오른쪽 시프트 연산을 하면 a ÷ 2b의 결과가 나온다.
  • 이 점을 이용해서 시프트 연산은 고속의 곱셈과 나눗셈을 구현하는데 사용되기도 하고 & 연산자와 | 연산자와 함께 byte처럼 작은 단위로 쪼개진 데이터를 다시 하나의 int나 long 형식으로 재조립하는데 사용되기도 한다.

비트 논리 연산자

  • 논리곱(&) 연산

  • 논리합(|) 연산

  • 배타적 논리합(^) 연산

  • 보수(NOT) 연산자

할당 연산자

연산자 이름 설명
= 할당 연산자 오른쪽 피연산자를 왼쪽 피연산자에게 할당합니다.
+= 덧셈 할당 연산자 a += b; 는 a = a + b;와 같습니다.
-= 뺄셈 할당 연산자 a -= b; 는 a = a – b;와 같습니다.
*= 곱셈 할당 연산자 a *= b; 는 a = a * b;와 같습니다.
/= 나눗셈 할당 연산자 a /= b; 는 a = a / b;와 같습니다.
%= 나머지 할당 연산자 a %= b; 는 a = a % b;와 같습니다.
&= 논리곱 할당 연산자 a &= b; 는 a = a & b;와 같습니다.
|= 논리합 할당 연산자 a |= b; 는 a = a | b;와 같습니다.
^= 배타적 논리합 할당 연산자 a ^= b; 는 a = a ^ b;와 같습니다.
<<= 왼쪽 시프트 할당 연산자 a <<= b; 는 a = a << b;와 같습니다.
>>= 오른쪽 시프트 할당 연산자 a >>= b; 는 a = a >> b;와 같습니다.

연산자의 우선순위

우선 순위 종류 연산자
1 증가/ 감소 연산자 후위 ++, — 연산자
2 증가/ 감소 연산자 전위 ++, — 연산자
3 산술 연산자 *, /, %
4 산술 연산자 +, –
5 시프트 연산자 <<, >>
6 관계 연산자 <, >, <=, >=, is, as
7 관계 연산자 ==. !=
8 비트 논리 연산자 &
9 비트 논리 연산자 ^
10 비트 논리 연산자 |
11 논리 연산자 &&
12 논리 연산자 ||
13 조건 연산자 ?:
14 할당 연산자 =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=
[ssba]

The author

지성을 추구하는 디자이너/ suyeongpark@abyne.com

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.