정보처리기사/프로그래밍 언어 활용
프로그래밍 언어 활용 2
RangA
2023. 5. 29. 18:52
02. C언어의 연산자
01. C언어의 연산자 개념
1) 항과 연산자
- 단항 연산자 : 하나의 항으로만 연산이 됨
- 이항 연산자 : 두 개의 항으로 연산이 됨
- 삼항 연산자 : 세 개의 항으로 연산이 됨
2) 묵시적 순서 제어와 명시적 순서 제어
1. 묵시적 순서 제어
- 프로그래머가 아무런 조치를 취하지 않아도 이미 정해진 규칙의 의해서 제어됨
- 프로그램 언어에서 미리 정해진 순서에 따라서 제어가 일어나는 것을 의미함
- 괄호 없이 연산자의 우선순위에 따라 계산함
2. 명시적 순서 제어
- 프로그래머가 원하는 제어를 위해 직접 조치를 취하는 제어
- 각 문장이나 연산의 순서를 프로그래머가 직접 변경함
- 괄호를 이용하여 연산 순서를 변경하는 계산
- GOTO문이나 반복문을 사용해서 문장의 실행 순서를 변경함
3) C언어의 연산자 우선순위
- C언어의 연산자 우선순위는 묵시적으로 정해져 있음
- 덧셈 연산자와 곱셈 연산자가 혼합되어 수식이 이루어졌다면 곱셈 연산자가 우선 연산됨
- 우선순위를 변경하려면 괄호를 이용해 변경할 수 있음
- 덧셈 연산자와 뺄셈 연산자는 동일한 우선순위를 갖는 연산자
- 동일한 우선순위를 갖는 연산자는 연산자에 따라 좌측에서 우측으로 혹은 우측에서 좌측으로 결합됨
- 덧셈 연산자와 뺄셈 연산자가 혼합된 연산 수식에서는 좌측에서 우측으로 결합 순서가 정해져 있음
02. C언어의 연산자 종류
1) ++, -- 연산자
- 증감 연산자
- 1씩 증가하거나 감소하는 연산자
- ++ 연산자나 -- 연산자는 변수 앞에 있으면 전위 연산자, 변수 뒤에 있으면 후위 연산자라고 함
2) -, !, ~, sizeof 연산자
- - 연산자
- 변수의 부호를 바꾸는 연산자
- ! 연산자
- 참, 거짓을 바꾸는 연산자
- C언어에서는 참과 거짓을 표현하는 논리형 상수도 논리형 변수도 존재하지 않음
- 0이면 거짓, 1이면 참으로 판단하고, 0이 아니면 모두 참으로 판단함
- 논리식의 결과도 참이면 1, 거짓이면 0 값을 갖게 됨
- ~ 연산자
- 변수와 상수를 이진수로 풀어서 비트 하나하나를 대상으로 연산함
- 하나의 비트가 0이면 1로, 1이면 0으로 변환함
- sizeof() 함수
- 변수나 상수의 byte 수를 반환하는 함수
- sizeof() 함수 안에는 변수 선언 예약어, 변수명, 상수를 인수로 사용하면 해당되는 유형의 길이를 반환함
- 05 : 문자형이므로 모두 "1 1 1"이 출력됨
- 06 : 정수형 int가 2byte이면 모두 "2 2 2"가 출력됨
- 07 : 정수형 long이 4byte이면 모두 "4 4 4"가 출력됨
3) &, * 연산자
- & 연산자
- 변수의 절대 번지를 표현하는 번지 지정 연산자
- 연산자
- 포인터 변수를 선언하거나 포인터의 내용을 표현하는 간접 연산자
- 간접 연산자 *는 사용하는 위치에 따라 사용상의 의미가 다름
- 선언부 : 포인터 변수로 선언함
- 처리부 : 포인터 변수가 기억하고 있는 절대 번지의 내용을 가리킴
- 연산자
4) 산술 연산자
- 사칙 연산
- +, -, *, / 외에 나머지 연산자 %가 존재함
- 몫과 나머지 연산자
- / 나눗셈 연산자로 혹은 몫을 계산하는 연산자로 사용하기도 함
- % 연산자는 나머지 연산자로 피연산자가 모두 정수형이어야 함
5) <<, >> 연산자
- 시프트 연산자
- 변수와 상수를 이진수로 풀어서 비트 하나하나를 대상으로 연산함
- 비트 값들을 좌측 또는 우측으로 위치를 이동하는 산술 시프트 연산자
- a << n
- 결과 공식 : a × 2n
- 변수 a를 n비트 만큼 좌 시프트함
- a >> n
- 결과 공식 : a ÷ 2n
- 변수 a를 n비트 만큼 우 시프트함
6) 관계 연산자
- 관계 연산자
- 크기를 비교하는 연산자로 참이면 1(True), 거짓이면 0(False) 값을 가짐
- >, >=, <, <=, ==, !=가 있음
- 관계 연산자의 우선 순위
- ==, !=는 다른 관계 연산자보다 우선 순위가 항상 느림
7) 비트 논리 연산자
- 변수와 상수를 이진수로 풀어서 비트 하나하나를 대상으로 연산함
- 비트 논리 연산자 종류
- a & b(비트 AND) : 대응되는 비트가 한쪽이라도 0이면 0
- a | b(비트 OR) : 대응되는 비트가 한쪽이라도 1이면 1
- a ^ b(비트 XOR) : 대응되는 비트가 같으면 0, 다르면 1
8) 논리 연산자
- 변수와 상수를 대상으로 연산하여 참, 거짓을 논리적으로 판단함
- 논리 연산자 종류
- a && b(AND) : 한쪽이라도 거짓이면 거짓으로 0이 됨
- a || b(OR) : 한쪽이라도 참이면 참으로 1이 됨
- 논리 연산자의 연산 우선순위는 &&, || 순
- 논리 연산자는 수식 처리가 중단될 수 있음
- 참, 거짓을 판단할 수 있으면 더 이상의 수식을 판단하지 않음
9) 삼항 연산자
- 항이 3개 있는 연산자로 참, 거짓에 따라 수행할 명령문이 선택됨
- 조건식 ? A : B 의 형태로 조건식이 참이면 A 명령문, 거짓이면 B 명령문을 수행함
10) 대입 연산자
- 우측에 있는 변수, 상수, 수식의 결과 값을 좌측 변수에 기억시키는 명령
- 대입 연산자는 +=, -=, *=, /=, &= 등이 있음
11) 콤마 연산자
- 동일한 유형의 명령문이나 자료를 나열하는 데 사용하는 연산자
- 콤마 연산자는 좌측에서 우측으로 결합 순서를 가짐
12) 캐스트 연산자
- 변수의 타입을 실행 중에 변경할 수 있는 연산자
- "(타입) 자료형" 형태로 사용함