[C] 3. 연산자(Operator)

Wonder_Land🛕·2022년 7월 12일
0

[C]

목록 보기
3/18
post-thumbnail
  1. 산술 연산자
  2. 대입 연산자
  3. 비트 연산자
  4. 연산자 우선순위
  5. Q&A
  6. 마치며

1. 산술 연산자(Arithmetic Operator)

연산자의미
+양변의 값을 더하기
-양변의 값을 빼기
*양변의 값을 곱하기
/좌변의 값을 우변의 값으로 나누기
%좌변의 값을 우변의 값으로 나눈 나머지

단, 주의할 점이 있습니다.

C는 서로 다른 타입의 연산을 진행하면,
숫자의 범위가 더 큰 자료형으로 자료형들이 바뀌는 산술 연산을 수행합니다.

#include <stdio.h>

int main(void) {
	int a = 10;
	double b = 3;

	printf("%d\n%f", a / b, a / b);
	return 0;
}

[Result]
-1431655765
3.333333

위의 예시에서는
정수형 변수 a와 double형 변수 b를 나눗셈으로 연산했는데요,
숫자의 범위가 더 큰 double형으로 산술 연산을 하게 되어서
출력을 할 때 실수형으로 해주어야 오류가 나지 않습니다.


2. 대입 연산자(Assignment Operator)

대입 연산자는 다음과 같은 경우에 사용할 수 있습니다.

  • 변수를 선언할 때
  • 연산 결과를 변수에 저장할 때
  • 함수 변환값을 변수에 저장할 때

1) 복합 대입 연산자

연산자의미
=대입(할당)
+=좌변의 변수에서 우변의 값을 더해서 좌변의 변수에 대입
-=좌변의 변수에서 우변의 값을 빼서 좌변의 변수에 대입
*=좌변의 변수에서 우변의 값을 곱해서 좌변의 변수에 대입
/=좌변의 변수에서 우변의 값으로 나누어 좌변의 변수에 대입
%=좌변의 변수에서 우변의 값으로 나눈 나머지를 좌변의 변수에 대입

2) 증감 연산자

연산자의미
a++전위형(prefix), 변수 a에 1을 더한 후 결과 반환
++a후위형(prostfix), 변수 a를 반환 후 1을 더함
a--전위형(prefix), 변수 a에 1을 뺀 후 결과 반환
--a후위형(prostfix), 변수 a를 반환 후 1을 뺌
#include <stdio.h>

int main(void) {
	int a = 1;
	int b = 1;
	int c = 1;
	int d = 1;

	printf("%d\n", a++);	//prefix
	printf("%d\n", ++b);	//postfix
	printf("%d\n", c--);	//prefix
	printf("%d", --d);	//postfix
	return 0;
}

[Result]
1
2
1
0

전위형(Prefix)는 먼저 연산을 수행한 후 변수의 값을 반환하고,
후위형은(Postfix)는 변수의 값을 먼저 반환한 후 연산을 수행합니다.


3. 비트 연산자(Bit Operator)

  • 비트 연산자
    코드를 작성하면서, 비트 단위의 연산이 필요할 경우 사용
연산자의미예시
&양변의 비트 값 모두 1일 경우에만 1을 반환x, y = 1,0
x & y # 0
|양변의 값 모두 0일 경우에만 0을 반환x, y = 1,0
x | y # 1
^양변의 값이 다를 경우 1, 같을 경우 0을 반환x, y = 1,0
x ^ y # 1
~비트 값이 1일 경우 0, 0일 경우 1을 반환x = 1
~ x # -2
<<좌변의 값을 우변의 값만큼 비트를 왼쪽으로 이동x = 4
x << 1 # 8
>>좌변의 값을 우변의 값만큼 비트를 오른쪽으로 이동x = 4
x << 1 # 2

4. 연산자 우선 순위

코드를 작성하다보면 여러가지 연산자를 사용하게 됩니다.
이 때 연산자의 연산 순서 때문에, 의도하지 않은 논리적 오류가 발생할 수 있습니다.
따라서 미리 정의된 연산자의 우선순위를 알아야 합니다.

우선 순위연산자좌우 우선 순위
1( ), [], ->, ++(post), --(post)왼쪽 우선
2!, ~, +-(부호), *(포인터), &, sizeof,
++(pre), --(pre)
오른쪽 우선
3*, /, %왼쪽 우선
4+, -왼쪽 우선
5<< >>왼쪽 우선
6<, <=, >, >=왼쪽 우선
7== , !=왼쪽 우선
8&왼쪽 우선
9^왼쪽 우선
10|왼쪽 우선
11&&왼쪽 우선
12||왼쪽 우선
13?, :오른쪽 우선
14=오른쪽 우선
15,왼쪽 우선

1) 괄호가 최우선

2) 산술 연산이 비트 연산보다 우선

3) 관계 연산이 논리 연산보다 우선


5. Q&A

1) 컴퓨터의 음수 표현법

보수와 관련된 내용은 전에 Python에서 배우다가 정리해본 보수를 참고하자!


6. 마치며

오늘도 모두의 코드에서 공부하면서 배운 내용을 정리해보았습니다.

제가 이해하기 편하도록 정리하면서 글을 작성하다보니까 다시 한번씩 되뇌이는 습관이 생기네요.
좋은 습관이었으면 하네요.

사실 공부를 한 일주일만에 하는데요,
너무 귀찮아서 나약해져버렸어요😢
다시 열심히 하겠습니다...

[Reference] : 위 글은 다음 내용을 참고, 인용하여 만들어졌습니다.

profile
아무것도 모르는 컴공 학생의 Wonder_Land

0개의 댓글