본문 바로가기

C언어

[C언어] 연산자의 종류

연산자의 종류

구분

종류 

대입 연산자

= 

산술 연산자 

+ - * / % 

합 대입 연산자 

+= -= *= /= %= >>= <<= &= |= ^= 

관계 연산자 

> < >= <= == != 

논리 연산자 

&& || ! 

조건 연산자 

?: 

증감 연산자 

++ -- 

비트 연산자 

& | ^ ~ << >> 

형변환 연산자 

(자료형) 

콤마 연산자

주소 연산자 

& 

sizeof연산자 

sizeof(피연산자) 


1. 대입연산자

변수명 = 값                오른쪽에 있는 값을 왼쪽 변수에 대입

변수명 = 변수             오른쪽 변수에 저장된 값을 왼쪽 변수에 대입

변수명 = 수식             오른쪽 수식을 평가한 결과 값을 왼쪽 변수에 대입

Ex) x = 5 (5를 변수x에 대입)    

y = x (x변수에 저장된 값을 왼쪽 변수에 대입)

z = 3 + 5 (3 + 5 = 8을 z에 대입)


2. 산술연산자

+(덧셈) -(뺄셈) *(곱셈) /(나눗셈-몫) %(나눗셈-나머지)

Ex) 10 + 3 = 13

10 - 3 = 7

10 * 3 = 30

10 / 3 = 3

10 % 3 = 1


3. 복합 대입 연산자

Ex) a += b    ->    a = a + b

a -= b    ->    a = a - b

a *= b    ->    a = a * b

a /= b    ->    a = a / b

a %= b    ->    a = a % b


4. 관계 연산자

Ex) a > b    ->    a는 b보다 큰가?                 옮다면 참(1) / 아니라면 거짓(0)

a >= b    ->    a는 b보다 크거나 같은가?   옮다면 참(1) / 아니라면 거짓(0)

a < b    ->    a는 b보다 작은가?               옮다면 참(1) / 아니라면 거짓(0)

a <= b    ->    a는 b보다 작거나 같은가?   옮다면 참(1) / 아니라면 거짓(0)

a == b    ->    a는 b보다 같은가?             옮다면 참(1) / 아니라면 거짓(0)

a != b    ->    a는 b보다 같지않은가?        옮다면 참(1) / 아니라면 거짓(0)


5. 논리 연산자

참은 1, 거짓은 0    / 1이 아닌 숫자라면 다 거짓이라 생각해도 된다

Ex) a && b (a AND b)    ->    둘다 참인가?            옳다면 참(1) / 아니라면 거짓(0)

a || b (a OR b)    ->    둘중 하나라도 참인가?     옳다면 참(1) / 아니라면 거짓(0)


6. 조건 연산자

Ex) a = b > c ? 2 : 3    ->    b > c?         옳다면 2 / 아니라면 3

a = b && c ? 5 : 1    ->    b && c?    옳다면 5 / 아니라면 1


7. 증감 연산자

a++    a의 값을 1증가

++a    a의 값을 1증가

a--    a의 값을 1감소

--a    a의 값을 1감소


뭐가 다른거죠??! 예시를 통해 알아보겠습니다

Ex) a = b++     b의 값을 a에 대입 후에 1증가

a = ++b      b의 값을 1증가 후에 a에 대입

a = b--        b의 값을 a에 대입 후에 1감소

a = --b        b의 값을 1감소 후에 a에 대입


8. 비트 논리 연산자

&(AND) |(OR) ^(XOR) ~(NOT)

a(비트 값)

b(비트 값) 

a & b 

a | b 

a ^ b 

~a 

0 

0 

0 

0 

0 

1 

0 

1 

0 

1 

1 

1 

1 

0 

0 

1 

1 

0 

1 

1 

1 

1 

0 


<<(왼쪽 비트 이동 연산자) >>(오른쪽 비트 이동 연산자)

Ex) 15<< 2    ->    이진수1111을 111100으로 만듦. 따라서 15 * 2^2 = 60 

10 << 3    ->    이진수1010을 1010000으로 만듦. 따라서 10 * 2^3 = 80

15 >> 2    ->    이진수1111을 11로 만듦. 따라서 3

10 >> 3    ->    이진수1010을 1로 만듦. 따라서 1


9. 형 변환 연산자

Ex) (double)3    정수3을 실수 4.0으로 변환

(int)3.14       실수3.14를 정수 3으로 변환


10. sizeof 연산자

기억공간의 크기(바이트 수)를 얻을수 있는 연산자이다.