연산자

C는 다양한 연산자를 제공하고 있습니다. 각 연산자는 우선순위결합 방향을 가지고 있습니다. C++처럼 연산자를 프로그래머가 재지정할 수 있는 언어도 있지만, C는 그렇지 못합니다. 다음은 연산자들의 목록입니다. 값이 바뀌는 연산자는 굵게 표시했으며, lvalue라고 표시하지 않은 모든 연산의 결과는 rvalue입니다.

한 가지 알아두자면, 이름에 '논리'가 들어간 연산에서 '참'은 0이 아닌 값(주로 1)을, 거짓은 0을 나타냅니다. 이는 뒤의 iffor 등에서도 사용하니 알아두세요.


1순위, 좌에서 우로 결합

멤버 선택 a.b a의 멤버 b
멤버 선택 a->b 포인터 a가 가리키는 값의 멤버 b, (*a).b와 같은 뜻★
배열 첨자 a[ b ] 배열 ab번째 원소, *(a + b)와 같은 뜻★, lvalue
함수 호출 a(b, c) 함수 a에 인자 b, c 전달, rvalue 혹은 값 없음
후위 증가 a++ a의 복사본(rvalue)을 a++의 자리에 놓고 a자신은 1 증가 
후위 감소 a-- a의 복사본(rvalue)을 a--의 자리에 놓고 a자신은 1 감소


2순위, 우에서 좌로 결합

크기 측정 sizeof(a), sizeof a, sizeof(T) a가 차지하는 크기, 타입T가 차지하는 크기
전위 증가 ++a a가 1 증가, 증가한 자기 자신(lvalue)
전위 감소 --a a가 1 감소, 감소한 자기 자신(lvalue)
비트 NOT ~a a에 대한 비트 NOT(1의 보수)
논리 NOT !a a에 대한 논리 NOT
단항 덧셈 +a a 자기 자신
단항 뺄셈 -a a에 대한 부호 바꾸기
주소 &a a의 주소
참조 *a 주소 a가 가리키는 값, lvalue
캐스트 (T)a aT타입으로 캐스트


3순위, 좌에서 우로 결합

곱셈 a * b ab의 곱
나눗셈 a / b ab로 나눈 것
나머지 a % b ab로 나눈 나머지


4순위, 좌에서 우로 결합

덧셈 a + b ab의 합
뺄셈 a - b ab의 차


5순위, 좌에서 우로 결합

왼쪽 시프트 a << b a를 좌로 b만큼 시프트 한 것, 부호 없는 정수형에 한해 a * 2b과 같은 뜻
오른쪽 시프트 a >> b a를 우로 b만큼 시프트 한 것, 부호 없는 정수형에 한해 a / 2b과 같은 뜻


6순위, 좌에서 우로 결합

작음 a < b ab보다 작다면 참, 그렇지 않다면 거짓
a > b ab보다 크다면 참, 그렇지 않다면 거짓
작거나 같음 a <= b ab보다 작거나 같다면 참, 그렇지 않다면 거짓
크거나 같음 a >= b ab보다 크거나 같다면 참, 그렇지 않다면 거짓


7순위, 좌에서 우로 결합

같음 a == b ab가 같다면 참, 그렇지 않다면 거짓
같지 않음 a != b ab가 같지 않다면 참, 그렇지 않다면 거짓


8순위, 좌에서 우로 결합

비트 AND a & b ab의 비트 AND


9순위, 좌에서 우로 결합

비트 XOR a ^ b ab의 비트 XOR


10순위, 좌에서 우로 결합

비트 OR a | b ab의 비트 OR


11순위, 좌에서 우로 결합

논리 AND a && b ab의 논리 AND


12순위, 좌에서 우로 결합

논리 OR a || b ab의 논리 OR


13순위, 우에서 좌로 결합

조건 삼항 a ? b : c a가 참이라면 b, 그렇지 않다면 c


14순위, 우에서 좌로 결합

대입 a = b ab 대입, a는 상수가 아닌 lvalue
연산 후 대입 a += b, a -= b, a *= b... 각각 a = a + b, a = a - b, a = a * b...와 같은 뜻


15순위, 좌에서 우로 결합

쉼표 a, b a 명령어 실행 후 b명령어 실행


아직 배우지 않은 용어들이 나와 익숙하지 않을 것입니다. 증감 연산 및 사칙 연산, 나머지, 대입, 연산 후 대입 정도만 알아두십시오.