C 프로그래밍 - 4주차 : 연산자

산술 연산자

  • 기본 산술 연산자
연산자명칭사용 예설명
=대입 연산자a = 3정수 3을 a에 대입
+더하기a = 5 + 3정수 5와 3을 더한 값을 a에 대입
-빼기a = 5 - 3정수 5에서 3을 뺀 값을 a에 대입
*곱하기a = 5 * 3정수 5와 3을 곱한 값을 a에 대입
/나누기a = 5 / 3정수 5를 3으로 나눈 값을 a에 대입
%나머지값a = 5 % 3정수 5를 3으로 나눈 뒤 나머지 값을 a에 대입
  • 대입 / 증감 연산자
연산자명칭사용 예설명
+=대입 연산자a += 3a = a + 3과 동일
-=대입 연산자a -= 3a = a - 3과 동일
*=대입 연산자a *= 3a = a * 3과 동일
/=대입 연산자a /= 3a = a / 3과 동일
%=대입 연산자a %= 3a = a % 3과 동일
++증가 연산자a++ 또는 ++aa = a + 1 또는 a = a + 1과 동일
감소 연산자a— 또는 —aa = a - 1 또는 a = a - 1과 동일
  • a++와 ++a의 차이는 증가하는 순서임.
    • b = a++ : a를 b에 대입하고 a를 1 증가함
    • b = ++a : a를 1 증가하고 b에 대입함

관계 연산자

  • 관계 연산자의 결과는 참이나 거짓 중 하나임
  • 단독으로 쓰이지는 않고, 조건문이나 반복문에 쓰임
연산자의미설명
==같다두 값이 동일하면 참
!=같지 않다두 값이 다르면 참
>크다왼쪽이 크면 참
<작다왼쪽이 작으면 참
>=크거나 같다왼쪽이 크거나 같으면 참
작거나 같다왼쪽이 작거나 같으면 참

논리 연산자

  • 여러 조건을 복합하여 사용
연산자의미설명사용 예
&&그리고(AND)두 조건 모두 참이어야 참(a > 100) && (a < 200)
||또는(OR)두 조건 중 하나만 참이어도 참(a > 100) || (a < 200)
!아니다(NOT)참이면 거짓, 거짓이면 참!(a == 100)

비트 연산자

  • 정수나 문자 등을 이진수로 변환한 후, 각 자리의 비트끼리 연산 수행
연산자명칭설명
&비트 논리곱(AND)둘 다 1이면 1
|비트 논리합(OR)둘 중 하나만 1이면 1
^비트 배타적 논리합(XOR)값이 같으면 0, 값이 다르면 1
~비트 부정1은 0으로, 0은 1로 변경
<<비트 왼쪽 시프트(이동)비트를 왼쪽으로 시프트(이동)
>>비트 오른쪽 시프트(이동)비트를 오른쪽으로 시프트(이동)
  • 마스크 : 비트 논리곱(&, AND)를 사용한 방법. 특정 자릿수만 사용하고 싶을 때 사용

    • ex. 총 8자리의 비트가 있을 때, 뒤의 4 자리만 사용하고 싶으면 (주어진 변수 & 00001111)
  • 비트 부정 연산자는 두 수에 대한 연산이 아니고, 한 수의 비트를 반대로 만듬

    • 2의 보수(음수) = {1의 보수(각 비트의 값을 반전한 값) + 1}
  • 비트 왼쪽 시프트 : 비트를 왼쪽으로 n자리 이동시킴 = 2n을 곱함

  • 비트 오른쪽 시프트 : 비트를 오른쪽으로 n자리 이동시킴 = 2n으로 나눔. 이때 앞에 빈칸은 부호비트로 채워짐 (양수면 0, 음수면 1)

연산자 우선순위

우선순위연산자명칭
1() [] , 1차 연산자
2+ - ++ — ~ * &단항 연산자
3* / %산술 연산자
4+ -산술 연산자
5<< >>비트 시프트 연산자
6< > >=비교 연산자
7== !=동등 연산자
8&비트 연산자
9^비트 연산자
10|비트 연산자
11&&논리 연산자
12||논리 연산자
13?:삼항 연산자
14= += -= *= /= %= &= ^= |= < >>=대입 연산자
15,콤마 연산자