Download presentation
Presentation is loading. Please wait.
1
제 3 장 연산자 (Operators)
2
목 차 대입 연산자와 산술 연산자 관계 연산자와 논리 연산자 기타 연산자 연산자 우선순위
3
대입연산자와 산술연산자(1) 다른 고급 언어의 연산자와 달리 기계코드의 연산 : 명령어와 1대1로 대응 설계 : 연산 속도 빠름 다양한 연산자(48가지)를 지원 : 조건 연산자(? :), 증감 연산자(++, --), 복합 대입 연산자(+=, -=, *=, /=). - 프로그램의 간결성(conciseness) 획득 기반 대입(할당)연산자(assignment operators) ‘=‘ 사용 왼쪽에 변수, 오른쪽에 변수/상수/연산자 위치 산술연산자(arithmetic operators) 단항 연산자(unary operators) 이항 연산자(binary operators) 축약 연산자(증감연산자)
4
대입연산자와 산술연산자(2) 산술연산자 - 단항 연산자 단항 연산자의 종류 * & + , - ~ ! ++ , -- sizeof
의 미 기 능 결과형 * 주소형 형 포인터 형 & 주 소 형 변수 형에 대한 포인터 + , - 부호 변환 산술형 int, unsigned, long, double ~ 1의 보수 int, long, unsigned ! 논리 부정 산술 또는 포인터 int ++ , -- 감소 int, unsigned, long, double, pointer sizeof 크기 형 값 또는 형 명 unsigned
5
증감연산자-1 ⓐ 증가 연산자(increment operator) : ++ n의 값을 1씩 증가시키는 연산자
① 전위 증가(pre-increment) 연산자 : ++i; 전위 변수(++i)는 변수의 값을 우선 1만큼 증가시킨 후에 변수의 값을 수식에 사용. (예) ++i; /* i = i + 1; */ e = ++i; /* ⓐ i = i + 1; ⓑ e = i; */ ② 후위 증가(post-increment) : i++; 후위 변수(변수++)는 변수의 현재 값을 그대 로 사용한 후에 변수의 값을 1만큼 증가. (예) i++; /* i = i + 1; */ e = i++; /* ⓐ e = i; ⓑ i = i + 1; */
6
증감연산자-2 ⓑ 감소 연산자(decrement operator) 변수의 값을 1씩 감소시키는 연산자.
① 전위 감소(pre-decrement) 연산자 : --i; 전위형(--i) 변수는 변수의 값을 우선 1만큼 감소시키 후에 변수의 값을 수식에 적용. (예) --i; /* i = i - 1; */ e = --i; /* ⓐ i = i - 1; ⓑ e = i; */ ② 후위 감소(post-decrement) 연산자 : i--; 변수는 변수의 현재 값을 그대로 사용한 후에 변수의 값을 1만큼 감소. (예) i--; /* i = i - 1; */ e = i--; /* ⓐ e = i; ⓑ i = i - 1; */
7
증감연산자-3 ⓒ 증감 연산자의 특징 코딩 매우 간단. 효율적인 기계 코드를 생성. 하드웨어 전문 분야에서는 편리.
한 함수내에서 같은 인수를 여러번 사용하 지 않는 것이 좋음. (예) printf("%d%d%d", i, ++i, i++);
8
대입연산자와 산술연산자(3) 산술연산자 - 이항 연산자 이항 연산자 이항 연산자는 두 개의 피연산자를 필요로 하는 연산자 +
일반적인 사칙 연산자와 나머지 연산자를 의미한다 문자 내용 예제 ( int a, b, c ) + 덧셈 c = a + b; - 뺄셈 c = a – b; * 곱셈 c = a * b; / 나눗셈 c = a / b; % 나머지 c = a % b;
9
대입연산자와 산술연산자(4) 산술연산자 - 축약 연산자 축약 연산자 (복합 대입 연산자) += 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 %= a%=b a = a % b &= a&=b a = a & b (AND 연산) |= a|=b a = a | b (OR 연산) ^= a^=b a = a ^ b (XOR 연산)
10
관계연산자와 논리연산자(1) 관계 연산자(Relational Operators)
두 개의 피연산자 간의 대소 관계 비교 및 특정 조건 검사 결과 값은 참(true 또는 1), 거짓(false 또는 0) 문자 예제 내용 < a < b a가 b보다 작다 > a > b a가 b보다 크다 <= a <= b a가 b보다 작거나 같다 >= a >= b a가 b보다 크거나 같다 == a == b a와 b가 같다 != a != b a와 b가 같지 않다
11
관계연산자와 논리연산자(3) 논리연산자(Logical Operators) 여러 개의 조건을 결합하여 논리적 연산 수행
결과 값은 참(true 또는 1), 거짓(false 또는 0) 문자 예제 내용 && (AND) a = b && c b와 c가 모두 참이면 a=1, 아니면, a=0 || (OR) a = b || c b와 c가 모두 거짓이면 a=0, 아니면, a=1 ! (NOT) a = !b b가 참이면 a=0, b가 거짓이면 a=1
12
기타연산자(1) 비트연산자(Bitwise Operators) 비트(bit) 단위 연산 비트 단위 논리 연산자
비트 단위 이동 연산 비트 단위 논리 연산자 문자 예제 내용 & a = b & c; 비트단위 AND 연산 | a = b | c; 비트단위 OR 연산 ~ a = ~c; 비트단위 보수(반전) ^ a = a^b; 비트단위 XOR
13
기타 연산자(2) 비트 단위 논리 연산 결과 비트 단위 논리 연산의 예 x y x | y x & y x ^ y ~ x 1
14
기타연산자(3) 비트단위 이동(shift) 연산자 비트 단위로 왼쪽이나 오른쪽으로 이동 <<
문자 예제 내용 << a = 10; a<<2 10을 이진화하여 좌측으로 2칸(bit) 이동 a = 40 10x22 연산결과와 동일 >> a = 10; a>>2 10을 이진화하여 우측으로 2칸(bit) 이동 a = 2 10/22 연산결과와 동일
15
기타연산자(4) 콤마 연산자 (=순차 연산자) Type 연산자 sizeof() 연산자
동일 성격, 동등 자격의 오퍼랜드를 나열할 때 사용 ex) 변수의 선언, 함수의 인수 구분 좌에서 우로 연산을 수행 반환값은 마지막에 수행한 연산의 결과 Type 연산자 sizeof() 연산자 자료형이나 변수, 상수 또는 수식의 연산 결과 등이, 기억장소에서 차지하는 영역의 크기를 바이트 단위로 구한다 컴파일러마다 자료형에 따른 기억장소의 크기가 다르다
16
기타연산자(5) Type 연산자(cont.) cast() 연산자 (=형 변환 연산자) 여러 피연산자의 자료형이 서로 다른 경우
연산을 실행하기 전에 자료형을 지정한 자료형으로 변환 올림변환(형 넓히기: promotion)의 경우 컴파일러에 의해 자동으로 실행될 수 있음 ex) int형 3 + double형 4.0 = 결과는 double형 7.0 내림변환(형 좁히기: demotion)의 경우 정보손실이 예상되므로 컴파일 중 경고가 발생할 수 있음 cast() 연산자는 올림변환이나 내림변환 모두 이용가능 주로 내림변환에서 자주 이용됨
17
기타연산자(10) Type연산자 예제 예제 3-13 cast() 연산자 #include <stdio.h>
void main() { int i=36, j=5; printf(" %5.2f\n", (float)i / (float)j); /* 부동점 수로 변환 */ }
18
연산자 우선순위(1) 연산자 우선순위 우선순위가 높은 연산자부터 먼저 실행 우선순위가 같은 경우 연산자 분류에 따른 우선 순위
( )안의 내용을 먼저 처리 결합법칙(계산방향)에 따라 실행 연산자 분류에 따른 우선 순위 대입<조건<논리<비트<관계<이동<산술<단항
19
연산자 우선순위(2) 높음 ↑ 중간 ↓ 낮음 1차 연산자 (), [], ., -> 단항 연산자 *, /, % 이항 연산자
우선 순위 형명칭 연산자 높음 ↑ 중간 ↓ 낮음 1차 연산자 (), [], ., -> 단항 연산자 *, /, % 이항 연산자 +, - <<, >> <, >, <=, >= ==, != & ^ | && || 조건 연산자 ? : 축약 연산자 =, +=, -=, *=, /=, &=, |=, ^= ,(comma)
Similar presentations