※ 연산자
산술 연산자 | +, -, *, /, % |
증가/감소 연산자 | ++, -- |
관계 연산자 | <, >, ==, !=, <=, >= |
조건 연산자 | ?: |
논리 연산자 | &&, ||, ! |
비트 연산자 | <<, >>, &, |, ^, ~ |
할당 연산자 | =, +=, -=, *=, /=, %=, |=, ^=, <<=, >>= |
→ 위의 연산자 대부분은 각각 특정 형식에 대해서만 사용이 가능하다.
→ 연산자는 피연산자를 필요로 하고 피연산자는 상수, 변수를 사용할 수 있다.
※ 산술 연산자(Arithmetic Operators)
→ 수치 형식의 데이터를 다루는 연산자
+ | 양쪽 피연산자를 더합니다. | 모든 수치 데이터 형식 |
- | 왼쪽 피연산자에서 오른쪽 피연산자를 차감합니다. | 모든 수치 데이터 형식 |
* | 양쪽 피연산자를 곱합니다 | 모든 수치 데이터 형식 |
/ | 왼쪽 연산자를 오른쪽 피연산자로 나눈 몫을 구합니다 | 모든 수치 데이터 형식 |
% | 왼쪽 연산자를 오른쪽 피연산자로 나눈 후의 나머지를 구합니다 | 모든 수치 데이터 형식 |
→ 수치 형식(정수 형식, 부동 소수점 형식, decimal 형식)에 대해서만 사용이 가능.
* 이항 연산자 : 연산자를 가운데에 피연산자가 양 옆에 위치하여 두 개의 피연산자가 필요한 연산자.
* 연산자의 우선순위 : *, /, %가 우선되고 +, -가 나중에 처리된다.
※ 증가 연산자(Increment Operator)와 감소 연산자(Decrement Operator)
++ | 증가 연산자 | 피연산자의 값을 1 증가시킨다. | 모든 수치 데이터 형식과 열거 형식 |
-- | 감소 연산자 | 피연산자의 값을 1 감소시킨다. | 모든 수치 데이터 형식과 열거 형식 |
* 단항 연산자 : 피연산자를 하나만 받는 연산자로 증가/감소 연산자가 해단된다.
→ 증가/감소 연산자를 변수의 뒤에 사용하면 해당 문장의 실행이 끝난 후에 변수의 값이 변경되고 변수의 앞에 사 용하면 변수의 값을 변경한 후에 문장이 실행된다.
@ 전위 증가/감소 연산자 : 변수의 앞에 위치시켜 사용하는 증가/감소 연산자
@ 후위 증가/감소 연산자 : 변수의 뒤에 위치시켜 사용하는 증가/감소 연산자
※ 문자열 결합 연산자
→ 문자열과 함께 사용하는 +연산자
ex) string result = “123” + “456”;
실행 결과 : "123456"
※ 관계 연산자
→ 두 피연산자 사이의 관계를 확인하는 연산자로 연산 결과는 논리 형식, bool이다.
< | 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 참, 아니면 거짓 | 모든 수치 형식과 열거 형식 |
> | 왼쪽 피연산자가 오른쪽 피연산자보다 크면 참, 아니면 거짓 | 모든 수치 형식과 열거 형식 |
<= | 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 참, 아니면 거짓 | 모든 수치 형식과 열거 형식 |
>= | 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참, 아니면 거짓 | 모든 수치 형식과 열거 형식 |
== | 왼쪽 피연산자가 오른쪽 피연산자와 같으면 참, 아니면 거짓 | 모든 데이터 형식에 대해 사용 가능 |
!= | 왼쪽 피연산자가 오른쪽 피연산자와 다르면 참, 아니면 거짓 | 모든 데이터 형식에 대해 사용 가능 string, object 형식도 사용 가능 |
※ 논리 연산자
→ 참과 거짓으로 이루어지는 진리값이 피연산자인 연산으로 부울 연산이라고도 한다.
* 논리합 연산 : 피연산자로 오는 두 개의 진리값 중에 하나라도 참이면 결과가 참이다.
* 부정 연산 : 피연산자의 진리값을 반대로 뒤집는다.
※ 조건 연산자(Conditional Operator)
→ 조건 연산자 ?:는 피연산자가 세 개이고 첫 번째 매개 변수인 조건식은 결과가 참 또는 거짓의 논리값이어야 하고 조건식의 결과가 참이면 두 번째 매개 변수가 거짓이면 세 번째 매개 변수가 선택된다.
두/세 번째 피연산자는 둘의 형식만 같으면 어떤 것이라도 상관없다.
ex) 조건식 ? 참일_때의_값 : 거짓일_때의_값
※ 비트 연산자
→ 바이트 단위가 데이터를 다루기에 용이하지만 비트 수준에서 데이터를 가공해야 하는 경우를 위한 연산자이다.
<< | 왼쪽 시프트 연산자 | 첫 번째 피연산자의 비트를 두 번째 피연산자의 수만큼 왼쪽으로 이동시킨다. | 첫 번째 피연산자는 int, uint, long, ulong이며 피연산자는 int 형식만 지원한다. |
>> | 오른쪽 시프트 연산자 | 첫 번째 피연산자의 비트를 두 번째 피연산자의 수만큼 오른쪽으로 이동시킨다. | <<와 같다. |
& | 논리곱(AND) 연산자 | 두 피연산자의 비트 논리곱을 수행한다. | 정수 계열 형식과 bool 형식에 대해 사용할 수 있다. |
| | 논리합(OR) 연산자 | 두 피연산자의 비트 논리합을 수행한다. | &와 같다. |
^ | 배타적 논리합(XOR) 연산자 | 두 피연산자의 비트 배타적 논리합을 수행한다. | &와 같다. |
~ | 보수(NOT0 연산자 | 피연산자의 비트를 0은 1로, 1은 0으로 반전시킨다. 단항 연산자이다. | int, uint, long, ulong에 대해 사용이 가능하다. |
* 시프트 연산자 : 비트를 왼쪽이나 오른쪽으로 이동시키는 기능을 한다.
→ 원본 데이터를 a, 옮긴 비트 수를 b라고 할 때 왼쪽 시프트 연산을 하면 a×2^b의 결과가 오른쪽 시프트 연산을
하면 a÷2^b가 나온다.
* 비트 논리 연산자 : 데이터의 각 비트에 대해 수행하는 논리 연산이다.
→ 비트 덩어리를 이루고 있는 각 비트에 대해 1은 참, 0은 거짓으로 해서 논리 연산을 하는 것이다.
& | 논리곱(AND) 연산자 | 두 피연산자의 비트에 논리곱을 수행한다. | 정수 계열 형식과 bool 형식에 대해 사용할 수 있다. |
| | 논리합(OR) 연산자 | 두 피연산자의 비트에 논리합을 수행한다. | &와 같다. |
^ | 배타적 논리합(XOR) 연산자 | 두 피연산자의 비트에 배타적 논리합을 수행한다. | &와 같다. |
~ | 보수(NOT0 연산자 | 피연산자의 비트에 0은 1로, 1은 0으로 반전시킨다. 단항 연산자이다. | int, uint, long, ulong에 대해 사용이 가능하다. |
※ 할당 연산자(Assignment Operator)
→ 변수 또는 상수에 피연산자 데이터를 할당하는 기능을 한다.
= | 할당 연산자 | 오른쪽 피연산자를 왼쪽 피연산자에게 할당한다. |
+= | 덧셈 할당 연산자 | 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 | 할당 연산자 | = *= /= %= += <<= >>= &= ^= |= |
'교외활동 > 공모전' 카테고리의 다른 글
2018 에너지 작품 공모전 (0) | 2018.09.09 |
---|---|
제4회 나만의 국어사전 뜻풀이 공모전 (0) | 2018.08.03 |
C언어 데이터의 정의 (0) | 2018.05.27 |
객체 지향 프로그래밍 (C#) (0) | 2018.05.23 |
2017 KEPCO 대학생 서포터즈 (한국전력공사) 피드백 (0) | 2018.05.22 |