본문 바로가기
C

C 연산자와 우선순위

by chunkind 2023. 10. 5.
반응형

대입, 산술 연산자

연산자 기능 결합 방향
= 연산자 오른쪽에 있는 값을 연산자 왼쪽에 있는 변수에 대입. 예) num = 20;
+ 두 피연산자의 값을 더한다. 예) num = 4 + 3;
- 왼쪽의 피연산자 값에서 오른쪽의 피연산자 값을 뺀다. 예) num = 4 - 3;
* 두 피연산자의 값을 곱한다. 예) num = 4 * 3;
/ 왼족의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다. 예) num = 7/3;
% 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게 되는 나머지를 반환한다. 예) num = 7 % 3;

증가, 감소 연산자

연산자 기능 결합 방향
++num 값을 1 증가 후, 속한 문자의 나머지를 진행(선 증가, 후 연산) 예) val = ++num;
num++ 속한 문장을 먼저 진행한 후, 값을 1 증가(선 연산, 후 증가) 예) val = num++;
--num 값을 1 감소 후, 속한 문장의 나머지를 진행(선 감소, 후 연산) 예) val = --num;
num-- 속한 문장을 먼저 진행한 후, 값을 1 감소(선 연산, 후 감소) 예) val = num--;

관계 연산자

연산자 기능 결합 방향
< 예) n1 < n2
n1이 n2보다 작은가?
> 예) n1 > n2
n1이 n2보다 큰가?
== 예) n1 == n2
n1과 n2가 같은가?
!= 예) n1 != n2
n1과 n2가 다른가?
<= 예) n1 <= n2
n1이 n2보다 같거나 작은가?
>= 예) n1 <= n2
n1이 n2보다 같거나 큰가?

논리 연산자

연산자 기능 결합 방향
&& 예) A && B
A와 B 모두 '참'이면 연살결과로 '참'을 반환(논리 AND)
|| 예) A || B
A와 B 둘 중 하나라도 '참'이면 연산결과로 '참'을 반환(논리 OR)
! 예) !A
A가 '참'이면 '거짓', A가 '거짓'이면 '참'을 반환(논리 NOT)

비트 연산자

연산자 기능 결합 방향
& 비트단위로 AND 연산을 한다.
예) num1 & num2;
| 비트단위로 OR 연산을 한다.
예) num1 | num2;
^ 비트단위로 XOR 연산을 한다.
예) num1 ^ num2;
→ 
~ 단항 연산자로서 피연산자의 모든 비트를 반전시킨다.
예) ~num; // num은 변화 없음, 반전 결과만 반환.
<< 피연산자의 비트 열을 왼쪽으로 이동시킨다.
예) num << 2; //num은 변화 없음. 두 칸 왼쪽 이동 결과만 반환.
>> 피연산자의 비트 열을 오른쪽으로 이동시킨다.
예) num>>2; //num은 변화 없음, 두 칸 오른쪽 이동 결과만 반환.

연산자의 우선순위와 결합방향

순위 기호 연산자 결합방향
1위 () 함수호출
[] 인덱스
-> 간접지정
. 직접지정
++(postfix)
--(postfix)
후위증가 및 감소
2위 ++(prefix)
--(prefix)
전위증가 및 감소
sizeof 바이트 단위 크기 계산
~ 비트 단위 NOT
! 논리 NOT
-, + 부호 연산(음수와 양수의 표현)
& 주소 연산
* 간접지정 연산
3위 (casting) 자료형 변환
4위 *, /, % 곱셈, 나눗셈 관련 연산
5위 +, - 덧셈, 뺄셈
6위 <<, >> 비트이동
7위 <, >, <=, >= 대소비교
8위 ==, != 동등비교
9위 & 비트 AND
10위 ^ 비트 XOR
11위 | 비트 OR
12위 && 논리 AND
13위 || 논리 OR
14위 ? : 조건연산
15위 =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |= 대입연산
16위   콤마연산

 

반응형