연산자 (Operator)
연산자에는 이항 연산자와 단항 연산자가 있다.
ㆍ 이항 연산자 : 두 개의 피연산자를 요구하는 연산자.
= : 오른쪽의 값을 왼쪽 변수에 대입 (결합 방향 ←) 대입 연산자
+ : 두 피연산자 값을 덧셈 (결합 방향 →) 산술 연산자
- : 왼쪽 피연산자 값에서 오른쪽 피연산자 값을 뺄셈 (결합 방향 →) 산술 연산자
* : 두 피연산자 값 곱셈 (결합 방향 →) 산술 연산자
/ : 왼쪽 피연산자 값을 오른쪽의 피연산자 값으로 나눗셈 (결합 방향 →) 산술 연산자
% : 왼쪽 피연산자 값을 오른쪽의 피연산자 값으로 나눈 뒤 나머지 값을 반환 (결합 방향 →) 산술 연산자
ㆍ 복합 대입 연산자
+= : 왼쪽 변수와 오른쪽 값을 더한 후 왼쪽 변수에 저장 (결합 방향 ←) 산술 복합 연산자
-= : 왼쪽 변수를 오른쪽 값으로 뺀 후 왼쪽 변수에 저장 (결합 방향 ←) 산술 복합 연산자
*= : 왼쪽 변수를 오른쪽 값으로 곱한 후 왼쪽 변수에 저장 (결합 방향 ←) 산술 복합 연산자
/= : 왼쪽 변수를 오른쪽 값으로 나눈 후 왼쪽 변수에 저장 (결합 방향 ←) 산술 복합 연산자
%= : 왼쪽 변수를 오른쪽 값으로 나눈 후 몫을 왼쪽 변수에 저장 (결합 방향 ←) 산술 복합 연산자
<<= : 왼쪽 변수의 값을 오른쪽 값 만큼 비트열을 왼쪽으로 이동 (결합 방향 ←) 비트 복합 대입 연산자
>>= : 왼쪽 변수의 값을 오른쪽 값 만큼 비트열을 오른쪽으로 이동 (결합 방향 ←) 비트 복합 대입 연산자
&= : 왼쪽 변수의 값과 오른쪽 값을 비트단위로 AND연산 (결합 방향 ←) 비트 복합 대입 연산자
^= : 왼쪽 변수의 값과 오른쪽 값을 비트단위로 XOR연산 (결합 방향 ←) 비트 복합 대입 연산자
|= : 왼쪽 변수의 값과 오른쪽 값을 비트단위로 OR연산 (결합 방향 ←) 비트 복합 대입 연산자
* |가 뭐지? |는 파이프라고 불리며 키보드를 보면 \와 |는 함께 있습니다.
ㆍ 부호 연산자
num = -1 // -부호가 붙으면 음수
num = 1 // 부호가 붙지 않으면 양수
ㆍ 관게 연산자(비교 연산자) : 대소, 동등 관계
참(True) = 1, 거짓(False) = 0
< : 왼쪽 값이 오른쪽 값보다 작은가? (결합 방향 →)
> : 왼쪽 값이 오른쪽 값보다 큰가? (결합 방향 →)
== : 왼쪽 값과 오른쪽 값이 같은가? (결합 방향 →)
!= : 왼쪽 값과 오른쪽 값이 다른가? (결합 방향 →)
<= : 왼쪽 값이 오른쪽 값보다 작거나 같은가? (결합 방향 →)
>= : 왼쪽 값이 오른쪽 값보다 크거나 같은가? (결합 방향 →)
ㆍ논리 연산자
&& : 왼쪽 값과 오른쪽 값 모두 '참'이면 '참'을 반환 (논리 AND) (결합 방향 →)
|| : 왼쪽 값과 오른쪽 값 둘 중 하나라도 '참'이면 '참'을 반환 (논리 OR) (결합 방향 →)
! : 값이 '참'이면 '거짓'을, '거짓'이면 '참'을 반환 (논리 NOT) (결합 방향 →)
ex) !A : A값이 '참'이면 '거짓'을, '거짓'이면 '참'을 반환
ㆍ 콤마(,) 연산자
둘 이상 변수를 동시 선언할 때 사용
ex) int num1, num2, num3;
둘 이상의 문장을 한 행에 삽입할 때 사용
ex) printf("Hello World!"), printf("Hello!");
둘 이상의 인자를 함수로 전달할 때 사용
ex) printf("%d", 1);
ㆍ 증가ㆍ감소 연산자 : 변수에 저장된 값을 1증가ㆍ감소시키는 단항 연산자
++num : 1증가 후 진행 (선 증가, 후 연산) (결합 방향 ←) * 전위 증가
num++ : 진행 후 1증가 (선 연산, 후 증가) (결합 방향 →) * 후위 증가
--num : 1감소 후 진행 (선 감소, 후 연산) (결합 방향 ←) * 전위 감소
num-- : 진행 후 1감소 (선 연산, 후 감소) (결합 방향 →) * 후위 감소
< 연산자의 우선 순위와 결합 방향>!!