단항 연산자

 

▶ + / - : 부호 변경

+a : a와 같음

◎ -a : a의 부호 변경

 

▶ ++, -- : 증감 연산자

◎ ++a : 전위 증감, 변수 a의 값을 1 더한 값을 반환 (변수처럼 값 대입 가능)

◎ a++ : 후위 증감, 변수 a의 값을 반환하고, 1을 더함 (변수처럼 값 대입 불가능)

▷ --는 값에서 1을 뺀다.

 

▶ & : 주소 연산자

◎ &a : 변수 a의 주소를 가져옴. (주소는 차지하는 연속된 메모리에서 첫번째 메모리의 주소)

 

▶ * : 역참조 연산자

◎ *pa : 주소 pa에 있는 값을 가져옴. (메모리 크기는 pa의 포인터 자료형에 따른다.)

 

▶ ! : 부정 (논리 연산자)

◎ !a : a가 true라면 false를, false라면 true를 반환

 

▶ ! : 반전 (NOT) (비트 연산자)

◎ ~a : a의 비트를 반전. (1->0, 0->1)

 

▶ (type) : 타입 캐스팅, 명시적 형변환

◎ (int) a : a의 자료형을 int로 바꿈 (float/double의 실수형이었다면 내림 처리)

 

▶ sizeof() : 변수 메모리 크기 확인

◎ sizeof(a) : 변수 a가 차지하는 메모리 크기를 확인 (배열이라면 배열이 차지하는 메모리까지도)

 

 

 이항 연산자 

 

▶+, -, *, /, % : 산술 연산자

◎ a%b : a에서 b를 나눈 나머지.

 

▶ &&, ||,  : 논리 연산자

◎ a&&b : a and b, a와 b가 모두 true 이면 true, 나머지는 false.

◎ a| |b : a or b, a와 b가 모두 flase 이면 false, 나머지는 true.

 

▶ ==, !=, >, <, >=, <= : 관계 연산자

◎ a==b : a와 b가 같으면 true, 아니면 false.

◎ a!=b : a와 b가 다르면 true, 아니면 false.

◎ a>b : a가 b보다 크면 true, 아니면 false.

◎ a<b : a가 b보다 작으면 true, 아니면 false.

◎ a>=b : a가 b보다 크거나 같으면 true, 아니면 false.

◎ a<=b : a가 b보다 작거나 같으면 true, 아니면 false.

 

▶ = : 대입 연산자

◎ a=b : 변수 a에 b의 값을 대입. 대입한 값을 반환.

 

▶ +=, -=, /=, *=, %= : 복합 대입 연산자

▷ a□=b : a=a□b. (□는 +,-,/,*,% 중 하나)

 

▶ &, ^, |, >>, << : 비트 연산자

▷ 비트 연산 : 두 수의 2진수값을 기준으로, 같은 자리수끼리 연산을 하여 이를 자리수 끝까지 반복함.

◎ a&b : 비트 AND 연산, 둘 모두 1이면 1, 나머지 0.

◎ a^b : 비트 XOR 연산, 둘의 값이 같으면 1, 나머지 0.

◎ a|b : 비트 OR 연산, 둘 모두 0이면 0, 나머지 1.

▷ 시프트 연산 : 자리수를 움직임.

◎ a>>b : 오른쪽 시프트 연산, a의 비트를 b만큼 오른쪽으로 이동. 새로운 비트는 부호 비트와 같음.

◎ a<<b : 왼쪽 시프트 연산, a의 비트를 b만큼 왼으로 이동. 새로운 비트는 0.

 

▶ &=, ^=, |=, >>=, <<= : 비트 복합 대입 연산자

▷ a□=b : a=a□b. (□는 &,^,|,>>,<< 중 하나)

 

 

 삼항 연산자 

▶ (? : ) : 조건 연산자

◎ (a ? b : c) : 조건 a의 결과가 true이면 b를, false이면 c를 반환.

 

 

※ , : 쉼표 연산자

◎ a, b : 두 식 모두 수행, 뒤의 식의 결과를 반환.

 

● 연산자 우선순위

▶ 동일 연산자끼리

▷ 우우선 : 오른쪽부터 왼쪽으로 연산한다.

             단항연산자 (후위 증감 제외), 대입 연산자, 조건 연산자

 

▷ 좌우선 : 왼쪽부터 오른쪽으로 연산한다.

             우우선을 제외한 모든 연산자

 

▶ 다른 연산자끼리

우선순위 연산자 설명 결합법칙 (방향)
1 () 괄호, 함수 호출 좌우선 (->)
1 a++, a-- 후위 증감 연산자 좌우선
1 [] 배열 첨자 좌우선
1 ., -> 구조체 멤버 접근 연산자 좌우선
1 (자료형) {값} 복합 리터럴 좌우선
2 ++a, --a 전위 증감 연산자 우우선 (<-)
2 +a, -a 부호 변경 우우선
2 !, ~ 논리 / 비트 NOT 우우선
2 (자료형) 자료형 변환 우우선
2 &, * 주소 / 역참조 연산자 우우선
2 sizeof() 자료형의 크기 우우선
3 *, /, % 산술 연산자 (곱,분,나머지) 좌우선 (->)
4 +, - 산술 연산자 (합,차) 좌우선
5 >>, << 시프트 연산자 좌우선
6 <, <=, >, >= 관계 연산자 (크기 비교) 좌우선
7 ==, != 관계 연산자 (같음 비교) 좌우선
8 & 비트 AND 연산자  좌우선
9 ^ 비트 XOR 연산자 좌우선
10 | 비트 OR 연산자 좌우선
11 && 논리 AND 연산자 좌우선
12 | | 논리 OR 연산자 좌우선
13 ? :  조건 연산자 우우선 (<-)
14 □= 복합 대입 연산자 (비트포함) 우우선
15 , 쉼표 (콤마) 연산자 좌우선 (->)

 

출처 : https://dojang.io/mod/page/view.php?id=188

'컴퓨터 언어 > C언어' 카테고리의 다른 글

제어구조  (0) 2019.11.27
이스케이프 시퀸스  (0) 2019.09.03
변수  (0) 2019.09.03
자료형과 형변환  (0) 2019.07.25
서식  (0) 2019.07.25

+ Recent posts