Presentation is loading. Please wait.

Presentation is loading. Please wait.

연산자Operators C언어의 기본 구조 도서출판 한산 C언어의 기본 구조 1: #include <stdio.h>

Similar presentations


Presentation on theme: "연산자Operators C언어의 기본 구조 도서출판 한산 C언어의 기본 구조 1: #include <stdio.h>"— Presentation transcript:

1 연산자Operators C언어의 기본 구조 도서출판 한산 C언어의 기본 구조 1: #include <stdio.h>
2: main( ) 3: { // 함수 본체의 실행시작. 4: STEP 1: 변수들의 선언 // STEP1과 STEP2를 한 행으로 표현한 것을 5: // 데이터의 초기화라고 한다. 6: // [예시: int silsu= ;] 7: 8: STEP 2: 변수에 데이터 대입 // 변수에 값을 대입하는 방법은 다음과 같다. 9: // [예시 1: value=10;] 10: // [예시 2: scanf("%d", &value);] 11: 12: STEP 3: 수식에 의한 연산 // 본 장에서 학습할 내용이다. 13: 14: STEP 4: 데이터의 출력 // STEP 3단계에 의해서 얻은 결과 값을 15: // 다음의 방법에 의해서 모니터에 출력한다. 16: // [예시: printf("%d ∖n", value);] 17: } // 함수 본체의 실행 끝. 도서출판 한산

2 연산자Operators 대입 연산자assignment operator
대입 연산자는 연산자 기호 = 로 표시되며 C언어가 가지고 있는 다양한 종류의 연산자 중에서 가장 기본이 되고 사용 빈도가 제일 높은 연산자로 간혹 치환 연산자라고도 불린다 대입 연산자는 C언어의 기본 구조를 구성하는 STEP 2단계에서 지정된 변수에 수식 값 등을 대입하여 저장하는 경우에 사용된다 다음은 대입 연산자의 형식은: 유 형 사용 예 변수 이름 = 이미 저장된 값을 가진 변수; int jeongsu, result; // 값 100을 변수 jeongsu에 대입한다. jeongsu=100; // 변수 jeongsu에 저장되어 있는 100의 값을 호출하여 변수 result에 대입하게 된다. result=jeongsu; 도서출판 한산

3 연산자Operators 대입 연산자assignment operator 도서출판 한산 유 형 사용 예 변수 이름 = 지정 값;
// 자료형 int value에 정수 값 20을 대입 int value=20; // 초기화 // 지정 값의 대입. float silsu; silsu=50; // 초기 값 변수 이름 = 수식; int a=10, b=30, hap; // 변수 a와 변수 b 값을 더한 결과 값은 변수 hap에 대입한다. hap=(a+b); // 수식 도서출판 한산

4 연산자Operators 예제 일반적 대입 연산자 사용 예제 흐름도 도서출판 한산
1: #include <stdio.h> 2: 3: mian() 4: { 5: int x, y; 6: 7: x=25; 8: y=50; 9: 10: printf("PRT1:x=%d, y=%d∖n", x, y); 11: 12: } 흐름도 도서출판 한산

5 연산자Operators 예제 여러 개의 변수에 동시에 같은 값을 대입할 수 있는 다중 대입 연산자 사용 예제 흐름도
1: #include <stdio.h> 2: 3: mian() 4: { 5: int x, y; 6: 7: x=y=25; // x,y에 25의 값을 대입한다. 8: 9: printf("PRT1:x=%d, y=%d∖n", x, y); 10: } 흐름도 도서출판 한산

6 연산자Operators 산술 연산자arithmetic operator 25 - 5
연산자Operators 산술 연산자arithmetic operator 산술 연산자는 사칙 연산자라고도 불리며 덧셈, 뺄셈, 곱셈, 그리고 나눗셈의 수식 연산을 수행할 때 사용 사용 빈도로 치면 대입 연산자 다음으로 활용이 높은 연산자로서 다음과 같이 2개 이상의 피연산자operand에 대한 수식 연산을 행한다 연산자 25 - 5 피연산자 25와 5인 2개의 피연산자와 뺄셈의 연산을 수행하기 위한 1개의 산술 연산자가 사용되고 있다 도서출판 한산

7 연산자Operators 산술 연산자의 형식 도서출판 한산 산술 연산자 종류 연산자 사용 예 설 명 덧셈 +
연산자Operators 산술 연산자의 형식 산술 연산자 종류 연산자 사용 예 설 명 덧셈 + result=a+b; 변수 a와 b를 더한 결과 값을 result에 대입한다. 뺄셈 - result=a-b; 변수 a와 b를 뺀 결과 값을 result에 대입한다. 곱셈 * result=a*b; 변수 a와 b를 곱한 결과 값을 result에 대입한다. 나눗셈[몫] / result=a/b; 변수 a를 b로 나눈 몫의 결과 값을 result에 대입한다. 나눗셈[나머지] % result=a%b; 변수 a를 b로 나눈 나머지의 결과 값을 result에 대입한다. 도서출판 한산

8 연산자Operators 예제 변수를 선언하지 않고 직접 데이터 값을 기입[초기화]하여 연산을 수행하는 예제 도서출판 한산
1:    /* 데이터 값을 이용한 사칙연산 */ 2:    #include <stdio.h> 3: 4:    main( ) 5:    { 6:         int a=10, b=20, result; // STEP 1과 STEP 2단계: 변수 선언 및 7:   // 데이터의 초기화 8:         result=a+b; // STEP 3단계: 수식 연산 9:   printf("PRT1: %d∖n", result); // STEP 4단계: 결과 출력 10:         11:        result=a+70;       // STEP 3단계: 수식 연산 12:        printf("PRT2: %d∖n", result); // STEP 4단계: 결과 출력 13:         14:        result=30+70; // STEP 3단계: 수식 연산 15:        printf("PRT3: %d∖n", result); // STEP 4단계: 결과 출력 16: 17: } 도서출판 한산

9 연산자Operators 예제 변수 x에 정수 값 20을 대입하고 변수 y에 정수 값 30을 대입하였을 때
두 수를 곱한 결과를 변수 result에 대입하여 출력하는 예제 1: #include <stdio.h> 2: 3: mian() 4: { 5: int x, y, result; 6: 7: x=20; 8: y=30; 9: 10: result=x*y; 11: 12: printf("PRT1:x*y=%d∖n", result); 13: } 흐름도 도서출판 한산

10 연산자Operators 예제 두 정수를 입력받아 나눗셈 연산자를 이용하여 몫과 나머지의 결과를 출력할 수 있는 예제 흐름도
1: #include <stdio.h> 2: 3: mian() 4: { 5: int x, y, mok, nameji; 6: 7: scanf("%d %d", &x, &y); 8: 9: mok=x/y; 10: nameji=x%y; 11: 12: printf("PRT1: 몫의 값은 %d∖n", mok); 13: printf("PRT2: 나머지 값은 %d∖n", nameji); 14: 15: } 흐름도 도서출판 한산

11 연산자Operators 복합 산술 대입 연산자
연산자Operators 복합 산술 대입 연산자 복합 산술 대입연산자는 산술 연산자와 대입 연산자가 하나의 결합된 형태로 이루어져 있으며, 연산 방법은 먼저 우측에서 산술에 대한 연산을 수행한 후에 좌측의 변수에 그 값을 대입하는 순서로 진행하게 된다 복합 산술 대입 연산자 설 명 연산자의 의미 total += a; 변수 total 값에 변수 a의 값을 더하고 그 결과 값을 변수 total에 대입한다. total = total + a; total -= a; 변수 total 값에서 변수 a의 값을 빼고 그 결과 값을 변수 total에 대입한다. total = total - a; total *= a; 변수 total 값에 변수 a의 값을 곱하고 그 결과 값을 변수 total에 대입한다. total = total * a; total /= a; 변수 total 값을 변수 a의 값으로 나누어 몫의 값을 변수 total에 대입한다. total = total / a; total %= a; 변수 total 값을 변수 a의 값으로 나누어 나머지의 값을 변수 total에 대입한다. total = total % a; 도서출판 한산

12 연산자Operators ❏ 복합 산술 대입 연산자의 예
연산자Operators 복합 산술 대입 연산자의 예 복합 산술 대입 연산자의 예 설 명 [total=100, a=5일 경우] total += a; total=total+a와 같은 의미이므로 total=100+5가 된다. 결국 total에는 105의 값이 대입된다. total *= a; total=total*a와 같은 의미이므로 total=100*5가 된다. 결국 total에는 500의 값이 대입된다. total /= a; total=total/a와 같은 의미이므로 total=100/5가 된다. 결국 total에는 나눗셈의 몫인 20의 값이 대입된다. total %= a; total=total%a와 같은 의미이므로 total=100%5가 된다. total에는 나눗셈의 나머지인 0의 값이 대입된다. total=+a와 같이 산술 연산자와 대입 연산자의 앞뒤가 바뀌는 경우는 사용이 불가능하다 도서출판 한산

13 연산자Operators 관계 연산자relational operator 25 > 5 관계 연산자는 비교 연산자라고도 칭한다
연산자Operators 관계 연산자relational operator 관계 연산자는 비교 연산자라고도 칭한다 관계 연산자의 우선순위는 산술 연산자보다 낮으며 좌측에서 우측으로 진행되도록 우선순위가 결정된다 2개의 피연산자의 대소 관계를 비교하기 위한 연산자이며, 그 결과는 참(1)과 거짓(0)이 된다 연산자 25 > 5 피연산자 25와 5인 2개의 피연산자와 뺄셈의 연산을 수행하기 위한 1개의 산술 연산자가 사용되고 있다 도서출판 한산

14 연산자Operators 관계 연산자의 종류
연산자Operators 관계 연산자의 종류 대입 연산자의 종류 기 호 설 명 크다 M > N 피연산자 M이 N보다 크면 참(1) 아니면 거짓(0) 작다 M < N 피연산자 N이 M보다 크면 참(1) 아니면 거짓(0) 크거나 같다 M >= N 피연산자 M이 N보다 크거나 같으면 참(1) 아니면 거짓(0) 작거나 같다 M <= N 피연산자 N이 M보다 크거나 같으면 참(1) 아니면 거짓(0) 같다 M == N 피연산자 M과 N이 같다면 참(1) 아니면 거짓(0) 같지 않다 M != N 피연산자 M이 N과 같지 않다면 참(1) 아니면 거짓(0) "M이 N보다 크거나 같다"의 경우에 있어서 수학 기호로는 M≥N 과 같이 표현하지만 관계 연산자는 M>=N으로 표현 도서출판 한산

15 [int a=5, b=10, c;]로 선언된 경우 조건들
연산자Operators 관계 연산자들의 예 [int a=5, b=10, c;]로 선언된 경우 조건들 조건 설명 평가 값 c = (a<b); 변수 a의 값이 b의 값보다 작으면 참(1), 그렇지 않으면 거짓(0)의 값이 변수 c에 대입된다. c=1; c = (a>b); 변수 a의 값이 b의 값보다 크면 참(1), 그렇지 않으면 거짓(0)의 값이 변수 c에 대입된다. c=0; c = (a>=b); 변수 a의 값이 b의 값보다 크거나 같으면 참(1), 그렇지 않으면 거짓(0)의 값이 변수 c에 대입된다. c = (a==b); 변수 a의 값과 b의 값이 같으면 참(1), 그렇지 않으면 거짓(0)의 값이 변수 c에 대입된다. c = (a!=b); 변수 a의 값이 b의 값과 같지 않다면 참(1), 그렇지 않으면 거짓(0)의 값이 변수 c에 대입된다. 도서출판 한산

16 연산자Operators 예제 "변수 x에 초기 값으로 저장된 100과 키보드를 통해 입력된 임의의 정수를 비교하여 그 평가 값을 출력"하는 예제 1: #include <stdio.h> 2: 3: mian() 4: { 5: int x=100; // 초기화 6: int y, result; 7: 8: printf("PRT1: 정수 값을 입력하시오.∖n"); 9: scanf("%d", &y); 10: 11: result=(x>y); 12: printf("PRT2: 결과 값 %d∖n", result); 13: 14: result=(x<y); 15: printf("PRT3: 결과 값 %d∖n", result); 16: } 흐름도 도서출판 한산

17 연산자Operators 예제 "2개의 임의의 문자를 입력받아 비교한 후 그 평가 값을 출력"하는 예제 흐름도 도서출판 한산
1: #include <stdio.h> 2: 3: mian() 4: { 5: char x, y; 6: int result; 7: 8: printf("PRT1: 두 문자를 입력하시오.∖n"); 9: scanf("%c %c", &x, &y); 10: 11: result=(x>=y); 12: printf("PRT2: 결과 값 %d∖n", result); 13: 14: result=(x!=y); 15: printf("PRT3: 결과 값 %d∖n", result); 16: } 흐름도 도서출판 한산

18 연산자Operators 논리 연산자logical operator
연산자Operators 논리 연산자logical operator 논리 연산자는 관계 연산자와 같이 결과가 참(1)과 거짓(0)을 이용하지만 논리 연산의 기능을 제공 C언어에서 논리 연산자는 AND(&&), OR(||), 그리고 NOT(!)의 3가지로 논리 연산의 기능을 수행하게 되고 논리 연산자의 우선순위는 산술 연산자와 관계 연산자보다 낮다 논리 연산자의 종류는: 연산자 명칭 기호 사용 예 설 명 AND[논리곱] && a&&b 변수 a값과 b값을 이용한 AND연산을 수행한다. OR[논리합] || a||b 변수 a값과 b값을 이용한 OR연산을 수행한다. NOT[논리 부정] ! !a 변수 a값을 이용한 NOT연산을 수행한다. 도서출판 한산

19 연산자Operators 논리 연산자logical operator
연산자Operators 논리 연산자logical operator 논리 연산자의 우선순위는 NOT이 가장 높고 다음은 AND연산자, 마지막은 OR연산자 순이다 논리 연산을 수행하는 경우에 평가는 다음의 표를 이용하여 그 평가 값을 얻게 된다 변수 a 변수 b a&&b [논리곱] a||b [논리합] !a [논리 부정] 1 도서출판 한산

20 연산자Operators ❏ 논리 연산자들의 예
연산자Operators 논리 연산자들의 예 수식 예 설 명 평가 값 (10>5)&&(5<3) (10>5)의 조건 결과는 참(1), (5<3)의 조건 결과는 거짓(0)이 된다. 따라서 1&&0의 평가 값은 0 이 된다. (10>5)||(5<3) (10>5)의 조건 결과는 참(1), (5<3)의 조건 결과는 거짓(0)이 된다. 따라서 1||0의 평가 값은 1 이 된다. 1 !(5>=3) (5>=3)의 조건 결과는 참(1)이 된다. 따라서 !(1)의 평가 값은 0 이 된다. 논리 연산자는 대부분 관계 연산자와 함께 사용되어 하나의 조건문으로 사용되기도 한다 도서출판 한산

21 (x/2 == 0) && (y%2 != 1) || (x >= y)
연산자Operators 논리 연산자들의 예 변수 x에 5, 변수 y에 10의 값을 대입했을 경우 (x/2 == 0) && (y%2 != 0) || (x >= y)의 조건에서 평가 값은? (x/2 == 0) && (y%2 != 1) || (x >= y) STEP 1: 논리 연산자는 산술 및 관계 연산자보다 우선순위가 낮다. 그리고 산술 연산자 는 관계 연산자보다 우선순위가 높다. 참고로 연산자의 우선순위가 가장 높은 것은 소괄호이다. 따라서 처리 순서는 다음과 같다. ① (x/2 == 0) ② (y%2 != 1) ③ (x >= y) STEP 2: ①에서 변수 x의 값 5를 2로 나눈 몫의 값을 구하고 0과 같은지를 평가한다. 이때 몫의 값 2는 0과 같지 않으므로 평가 값은 거짓(0)이 된다. 이처럼 ①의 평가가 끝나면 ②의 평가를 진행하게 된다. STEP 3: ②에서 변수 y의 값 10을 2로 나눈 나머지의 값을 구하고 1과 같지 않은지를 평가한다. 이때 나머지의 값 0은 1 같지 않으므로 평가 값은 참(1)이 된다. 이 처럼 ②의 평가가 끝나면 ③의 평가를 진행하게 된다. 도서출판 한산

22 연산자Operators ❏ 논리 연산자들의 예 ④ 평가 값: 0 && 평가 값: 1 || ⑤ 평가 값: 0 도서출판 한산
연산자Operators 논리 연산자들의 예 STEP 4: ③에서 사용된 1개의 연산자(>=)는 관계 연산자로 변수 x의 값 5와 변수 y의 값 10을 평가하게 된다. 이때 변수 x값 5는 변수 y값 10보다 작기 때문에 평가 값은 거짓(0)이 된다. 이처럼 ③의 평가가 끝나면 ①,②그리고③의 평가 값을 이용하여 아래의 STEP 5와 같이 논리 연산자의 항을 평가하게 된다. STEP 5: ①에서 평가 값은 0, ②에서 평가 값은 1,그리고 ③의 평가 값은 0 이다. 따라서 조건식을 정리하면 다음과 같다. 그리고 조건식이 같은 종류의 연산자들로 구성되어있는 경우는 좌측부터 우측으로 진행하면서 처리하게 된다. 처리 순서 는 다음과 같다. ④ 평가 값: 0 && 평가 값: 1 || ⑤ 평가 값: 0 STEP 6: ④는 0 && 1로 AND(논리곱)연산자의 평가 값을 구하는 것으로 그 값은 0 이 된다. 이처럼 ④의 평가가 끝나면 그 평가 값을 이용하여 아래의 STEP 7과 같이 ④⑤의 논리합 연산자에 의한 평가를 진행하게 된다. STEP 7: ⑤는 0 || 0인 OR(논리합)연산자의 평가 값을 구하는 것으로 그 값은 0 이 된다. 따라서 예제 문제의 조건식에 따른 최종적인 평가 값은 0 이 되는 것을 알 수 있다. 도서출판 한산

23 연산자Operators 예제 "변수 x에 초기 값으로 저장된 100과 키보드를 통해 입력된 임의의 정수를 비교하여 그 평가 값을 출력"하는 예제 1: #include <stdio.h> 2: 3: mian() 4: { 5: int x=100; // 초기화 6: int y, result; 7: 8: printf("PRT1: 정수 값을 입력하시오.∖n"); 9: scanf("%d", &y); 10: 11: result=(x>y); 12: printf("PRT2: 결과 값 %d∖n", result); 13: 14: result=(x<y); 15: printf("PRT3: 결과 값 %d∖n", result); 16: } 흐름도 도서출판 한산

24 연산자Operators 예제 논리 연산자 사용 예제 흐름도 도서출판 한산 1: #include <stdio.h>
2: 3: mian() 4: { 5: int x=5, y=3, z; 6: 7: z=((x>y) && (x<=5)); 8: printf("PRT1: %d∖n", z); 9: 10: z=(x||y); 11: printf("PRT2: %d∖n", z); 12: } 흐름도 도서출판 한산

25 설 명[int danhang, result;]
연산자Operators 단항 연산자unary operator 단항 연산자는 한 개의 피연산자[변수]에 대한 값을 연산 처리하는 연산자로서 증감 연산자라고도 칭한다 단항 연산자의 종류로는 증가 연산자와 감소 연산자가 있으며 제어문의 조건 등에서 많이 사용되고 있다 단항 연산자의종류는: 단항 연산자 종류 세부 명칭 종류 연산 기호 설 명[int danhang, result;] 증가 연산자 전위형 ++ result= ++danhang; danhang의 값이 1 증가한 후 result에 대입된다. 후위형 result= danhang++; danhang의 값을 result에 대입한 후 danhang의 값은 1 증가된다. 감소 연산자 -- result= --danhang; danhang의 값이 1 감소한 후 result에 대입된다. result= danhang--; danhang의 값을 result에 대입한 후 danhang의 값은 1 감소된다. 도서출판 한산

26 연산자Operators ❏ 증가 연산자increment operator
연산자Operators 증가 연산자increment operator 증가 연산자의 기호는 ++ 기호를 사용하며 변수에 대입된 값에 1을 더해줄 때 이용된다 그 종류로는 전위형 증가 연산자와 후위형 증가 연산자의 2가지 유형으로 구분 전위형prefix 증가 연산자 전위형 증가 연산자는 증가 연산 기호(++)가 피연산자인 변수의 이름 앞에 오게 된다 전위형 의 미 동일한 형태 출력 값 ++gab 변수 gab의 값이 1 증가된다. gab=gab+1 gab+1 원시 소스코드 작성 시에는 전위형 ++gab 또는 gab=gab+1의 형태 중에 어느 쪽으로 표현하여도 문제되지 않는다 도서출판 한산

27 연산자Operators 예제 전위형 증가 연산자 사용 예제 도서출판 한산 1: /* 전위형 증가 연산자의 사용 방법 */
연산자Operators 사용 예시: int gab=5; 의 경우 ++gab의 출력 값은? ++gab 출력 값 변수 gab에 대입된 5에 1을 증가시키므로 출력 값은 6 이 된다. gab+1 출력 값 ++gab은 gab=gab+1과 같은 형태이므로 gab=5+1의 출력 값은 6 이 된다. 예제 전위형 증가 연산자 사용 예제 1:    /* 전위형 증가 연산자의 사용 방법 */ 2:    #include <stdio.h> 3: 4:    main( ) 5:    { 6:         int a=50, b=50; 7:   8:         ++a; 9:         printf("PRT1: %d∖n", a); 10:   11:        b=b+1; 12:       printf("PRT2: %d∖n", b);  13:  } 도서출판 한산

28 연산자Operators 후위형postfix 증가 연산자
연산자Operators 후위형postfix 증가 연산자 후위형 증가 연산자는 전위형 증가 연산자와 마찬가지로 증가 연산 기호(++)를 사용하며 피연산자인 변수의 이름 뒤에 오게 된다 전위형 의 미 동일한 형태 출력 값 gab++ 변수 gab의 값이 1 증가된다. gab=gab+1 gab+1 원시 소스코드 작성 시에는 후위형 gab++ 또는 gab=gab+1의 형태 중에 어느 쪽으로 표현하여도 문제되지 않는다 사용 예시: int gab=5; 의 경우 ++gab의 출력 값은? gab++ 출력 값 변수 gab에 대입된 5에 1을 증가시키므로 출력 값은 6 이 된다. gab+1 출력 값 ++gab은 gab=gab+1과 같은 형태이므로 gab=5+1의 출력 값은 6 이 된다. 도서출판 한산

29 연산자Operators 예제 후위형 증가 연산자 사용 예제 도서출판 한산 1: /* 후위형 증가 연산자의 사용 방법 */
연산자Operators 예제 후위형 증가 연산자 사용 예제 1:    /* 후위형 증가 연산자의 사용 방법 */ 2:    #include <stdio.h> 3: 4:    main( ) 5:    { 6:         int a=50, b=50; 7:   8:         a++; 9:         printf("PRT1: %d∖n", a); 10:   11:        b=b+1; 12:       printf("PRT2: %d∖n", b);  13:  } 도서출판 한산

30 연산자Operators ❏ 감소 연산자decrement operator
연산자Operators 감소 연산자decrement operator 감소 연산자의 기호는 -- 기호를 사용하며 변수에 대입된 값에 1을 빼줄 때 이용된다 그 종류로는 전위형 감소 연산자와 후위형 감소 연산자의 2가지 유형으로 구분 전위형prefix 감소 연산자 전위형 감소 연산자는 감소 연산 기호(--)가 피연산자인 변수의 이름 앞에 오게 된다 전위형 의 미 동일한 형태 출력 값 --gab 변수 gab의 값이 1 감소된다. gab=gab-1 gab-1 전위형 --gab 또는 gab=gab-1의 형태 중에 어느 쪽으로 표현하여도 문제되지 않는다 도서출판 한산

31 연산자Operators 예제 전위형 감소 연산자 사용 예제 도서출판 한산 1: /* 전위형 감소 연산자의 사용 방법 */
연산자Operators 사용 예시: int gab=5; 의 경우 --gab의 출력 값은? --gab 출력 값 변수 gab에 대입된 5에 1을 감소시키므로 출력 값은 4 가 된다. gab-1 출력 값 --gab은 gab=gab-1과 같은 형태이므로 gab=5-1의 출력 값은 4 가 된다. 예제 전위형 감소 연산자 사용 예제 1:    /* 전위형 감소 연산자의 사용 방법 */ 2:    #include <stdio.h> 3: 4:    main( ) 5:    { 6:         int a=50, b=50; 7:   8:         --a; 9:         printf("PRT1: %d∖n", a); 10:   11:        b=b-1; 12:       printf("PRT2: %d∖n", b);  13:  } 도서출판 한산

32 연산자Operators 후위형postfix 감소 연산자
연산자Operators 후위형postfix 감소 연산자 후위형 감소 연산자는 전위형 감소 연산자와 마찬가지로 감소 연산 기호(--)를 사용하 며 피연산자인 변수의 이름 뒤에 오게 된다 전위형 의 미 동일한 형태 출력 값 gab-- 변수 gab의 값이 1 감소된다. gab=gab-1 gab-1 원시 소스코드 작성 시에는 후위형 gab-- 또는 gab=gab-1의 형태 중에 어느 쪽으로 표현하여도 문제되지 않는다 사용 예시: int gab=5; 의 경우 gab--의 출력 값은? gab-- 출력 값 변수 gab에 대입된 5에 1을 감소시키므로 출력 값은 4 가 된다. gab-1 출력 값 --gab은 gab=gab-1과 같은 형태이므로 gab=5-1의 출력 값은 4 가 된다. 도서출판 한산

33 연산자Operators 예제 후위형 감소 연산자사용 예제 도서출판 한산 1: /* 후위형 감소 연산자의 사용 방법 */
연산자Operators 예제 후위형 감소 연산자사용 예제 1:    /* 후위형 감소 연산자의 사용 방법 */ 2:    #include <stdio.h> 3: 4:    main( ) 5:    { 6:         int a=50, b=50; 7:   8:         a--; 9:         printf("PRT1: %d∖n", a); 10:   11:        b=b-1; 12:       printf("PRT2: %d∖n", b);  13:  } 도서출판 한산

34 연산자Operators 전위형과 후위형의 결과 값을 변수에 대입하는 경우 도서출판 한산
연산자Operators 전위형과 후위형의 결과 값을 변수에 대입하는 경우 사용 예시: int gab=5, result; 의 경우 각각의 증감에 대한 출력 값은? result=++a; a에 1을 더한 결과를 result에 대입한다. result의 결과 값은 6 이 되며, a의 값도 6 이 된다. result=a++; result에 a의 값을 대입한 후에 a에 1을 더한다. result의 결과 값은 5 가 되며, a의 값은 6 이 된다. result=--a; a에 1을 뺀 결과를 result에 대입한다. result의 결과 값은 4 가 되며, a의 값도 4 가 된다. result=a--; result에 a의 값을 대입한 후 a에 1을 뺀다. result의 결과 값은 5 가 되며, a의 값도 4 이 된다. 도서출판 한산

35 연산자Operators 예제 전위형과 후위형의 결과 값을 변수에 대입하여 출력하는 예제 도서출판 한산
연산자Operators 예제 전위형과 후위형의 결과 값을 변수에 대입하여 출력하는 예제 1: /* 전위형과 후위형의 결과 값을 변수에 대입 */ 2:    #include <stdio.h> 3: 4:    main( ) 5:    { 6:         int a=50, result; 7:   8:         result=++a; // a=a+1 9:         printf("PRT1: %d∖t", result); 10:   printf("PRT1-1: %d\n", a); 11:         12:       result=a++;  // a=a+1 13:   printf("PRT2: %d∖t", result); 14: printf("PRT2-1: %d\n", a); 15: 16: result=--a; // a=a-1 17: printf("PRT3: %d∖t", result); 18: printf("PRT3-1: %d\n", a); 19: 20: result=a--; // a=a-1 21: printf("PRT4: %d∖t", result); 22: printf("PRT4-1: %d\n", a); 23: } 도서출판 한산

36 연산자Operators 전위형/후치형에 따른 증감 연산자 사용 시 주의사항 도서출판 한산
연산자Operators 전위형/후치형에 따른 증감 연산자 사용 시 주의사항 int sangsu=50;으로 초기화된 경우 ++(sangsu+100) 수식의 경우에 증감 연산자는 사용할 수 없다. ++(150) 숫자(정수, 실수)의 경우에 증감 연산자는 사용할 수 없다. ++('A') 문자형의 경우에 증감 연산자는 사용할 수 없다. ++(sangsu+sangsu) 변수의 값은 상수이며 또한 수식이 포함되어 있기 때문에 증감 연산자를 사용할 수 없다. 도서출판 한산

37 연산자Operators 비트 단위 연산자bitwise operator
비트 단위 연산자는 피연산자[변수]에 대한 정수 비트 단위의 연산을 처리할 때 사용 비트 단위 연산자를 사용할 경우 반드시 데이터의 정수형을 이용하여 비트 단위인 0 또는 1의 2진수로 변환시켜서 구성하여야 한다 컴퓨터에서 모든 정보는 0 또는 1로 변환되어 처리되는데 0과 1을 최소 단위인 비트bit라고 한다 예를 들어 정수 5를 4bit로 표현은: 또한, 정수 5를 1Byte로 표현하게 된다면 8bit가 모여서 1Byte가 되기 때문에 다음과 같이 표현할 수 있다 도서출판 한산

38 연산자Operators 비트 단위 연산자는 다음과 같이 비트 논리 연산자와 비트 이동 연산자로 분류할 수 있다 도서출판 한산
비트 단위 연산자 분류 연산자 기호 비트 논리 연산자 비트AND(&), 비트OR(|), 비트XOR(^), 비트NOT(~) 비트 이동 연산자 왼쪽 비트 이동 <<, 오른쪽 비트 이동 >> 도서출판 한산

39 연산자Operators ❏ 비트 논리 연산자bitwise logical operator
피연산자의 정수 값을 0과 1의 비트 단위로 변환하여 논리적인 연산을 수행하는 연산자 비트 논리 연산자의 종류는: 연산자 종류 기호 사용 예 설 명 AND & a & b 비트 논리곱으로 변수 a와 b의 값을 비트별 AND 연산처리. OR | a | b 비트 논리합으로 변수 a 값과 b 값의 비트별 OR 연산처리. XOR ^ a ^ b 배타적 비트 논리합으로 변수 a와 b의 값을 비트별 XOR 연산처리. NOT ~ ~a 비트의 반전으로 변수 a 값을 비트별 반전처리.[1의 보수] 도서출판 한산

40 연산자Operators 변수 a와 b에 대입된 값을 이용하여 비트 논리 연산을 수행하는 경우에 결과는: 도서출판 한산 변수 a
[비트 논리곱] a | b [비트 논리합] a ^ b [배타적 비트 논리합] ~a (1의 보수) [비트의 반전] 1 도서출판 한산

41 연산자Operators 예제 비트 논리곱( & ) 연산자의 예 도서출판 한산

42 연산자Operators 예제 비트 논리합( | ) 연산자의 예 도서출판 한산

43 연산자Operators 예제 배타적 비트 논리합( ^ ) 연산자의 예 도서출판 한산

44 연산자Operators 예제 비트의 반전( ~ ) 연산자의 예 도서출판 한산

45 연산자Operators 비트 이동 연산자bitwise shift operator
비트 이동 연산자는 피연산자의 각 비트를 지정된 만큼 좌우로 이동 그 종류로는 좌측 이동(<<)과 우측 이동(>>) 연산자가 있다 일반적으로 비트 이동 연산자의 이동은 기본적으로 2n을 생각하면 이해하는데 도움 n은 좌/우측으로 이동되는 비트 수 예를 들어 좌측 이동의 경우는 피연산자의 값에 2n을 곱해주며, 우측 이동의 경우는 피연산자의 값에 2n을 나누어서 몫의 값만을 이용한다. 이때 소수점 이하는 사용하지 않는다. 비트 이동 연산자 종류 기호 사용 예 설 명 좌측 비트 이동 << a << 3 변수 a의 값을 좌측으로 3bits만큼 이동시킨다. 우측 비트 이동 >> a >> 3 변수 a의 값을 우측으로 3bits만큼 이동시킨다. 도서출판 한산

46 연산자Operators 예제 "변수 a에 정수 값 13을 대입하고 나서 다음 조건의 좌/우측 비트만큼 이동시키면 결과 값"은?
13 << 2 변수 a의 값을 좌측으로 2bits만큼 이동시키므로 13 ⅹ 22 = 52 가 된다. a >> 2 13 >> 2 변수 a의 값을 우측으로 2bits만큼 이동시키므로 13 / 22 = 3.25 이지만 소수점 이하는 사용하지 않으므로 3 이 된다. 도서출판 한산

47 연산자Operators ❏ 좌측 비트 이동 연산자 (<<)
❏ 좌측 비트 이동 연산자 (<<) 좌측 비트 이동 연산자(<<)는 주어진 n만큼의 비트를 좌측으로 이동시키며 좌측으로 밀려나간 비트는 제거되고 n만큼의 우측 빈자리에는 0 이 채워진다. 예를 들어 a=13 이라고 가정하고 2만큼 비트를 좌측으로 이동시켰을 때 결과 값은? 도서출판 한산

48 연산자Operators 각 비트 값이 0 인 경우는 2n을 곱해도 결과는 0 이므로 비트 값이 1인 경우만 계산하면 다음과 같다. (1ⅹ25)+(1ⅹ24)+(1ⅹ22) => 52 따라서 최종적인 결과 값은 52 가 된다. 도서출판 한산

49 연산자Operators [방법 2] a=13을 좌측2bits 이동하는 것이므로 다음과 같이 수식 연산을 통해서 결과 값을 구한다. 최종 출력 값 = 변수 값 x 2n [n은 이동 비트 수] 위 식에 적용하면, 최종 출력 값 = 13 x 22 = 52 [방법 1]과 [방법 2]의 최종 결과 값이 52로 서로 같다는 것을 확인 할 수 있다. 비트가 좌측으로 이동하는 경우는 2n을 곱해준다는 것에 주의하기 바란다. 도서출판 한산

50 연산자Operators ❏ 우측 비트 이동 연산자 (>>)
❏ 우측 비트 이동 연산자 (>>) 우측 비트 이동 연산자(>>)는 주어진 n만큼의 비트를 우측으로 이동시키며 우측으로 밀려나간 비트는 제거되고 n만큼의 좌측 빈자리에는 0[양수] 또는 1[음수]의 값이 채워진다 예를 들어 a=13 이라고 가정하고 2만큼 비트를 우측으로 이동시켰을 때 결과 값은? 도서출판 한산

51 연산자Operators 각 비트 값이 0 인 경우는 2n을 곱해도 결과는 0 이므로 비트 값이 1인 경우만 계산하면 다음과 같다. (1ⅹ21)+(1ⅹ20) => 3 따라서 최종적인 결과 값은 3이 된다. 도서출판 한산

52 연산자Operators [방법 2] a=13을 우측2bits 이동하는 것이므로 다음과 같이 수식 연산을 통해서 결과 값을 구한다. 최종 출력 값 = 변수 값 x 2n [n은 이동 비트 수] 위 식에 적용하면, 최종 출력 값 = 13 / 22 = 3.25 여기서 3.25 의 값에서 소수점 이하 소수부를 생략한 정수부인 3 이 최종 결과 값이 된다. 도서출판 한산

53 연산자Operators 조건 연산자conditional operator
조건 연산자는 주어진 조건에 대해 참과 거짓을 판별하고 나서 그에 해당되는 실행문을 실행하게 된다 조건 연산자의 형식은 다음과 같다 (조건문) ? 실행문 1 : 실행문 2; 조건문의 결과가 참이라면 실행문 1을 실행하며, 조건문의 결과가 거짓이면 실행문 2를 실행한다. 도서출판 한산

54 연산자Operators 예제 조건 연산자 예제 [ 흐름도 ] 도서출판 한산 1: #include <stdio.h>
연산자Operators 예제 조건 연산자 예제 1: #include <stdio.h> 2: 3: mian() 4: { 5: int a=5; 6: int b=3; 7: 8: printf("PRT1: 다음 조건의 결과는?∖n"); 9: (a>b) ? printf("참∖n") : printf("거짓∖n"); 10: } [ 흐름도 ] 도서출판 한산

55 연산자Operators 조건 연산자 사용 시 주의사항 도서출판 한산 조건 연산자 형식 표현 컴파일 시 원 인
연산자Operators 조건 연산자 사용 시 주의사항 조건 연산자 형식 표현 컴파일 시 원 인 (a>b) ? printf("참∖n"); : printf("거짓∖n"); 컴파일 오류 참의 경우에 출력하는 실행문에 printf함수는 끝부분의 세미콜론(;)기호를 생략한다. (a>b) ? printf("참∖n") : printf("거짓∖n"); 컴파일 성공 올바른 형식이다. 조건 연산자 형식 표현 컴파일 시 원 인 (a>b) ? printf("참∖n") : printf("거 짓∖n"); 컴파일 오류 조건 연산자를 여러 행으로 나누어 표현하는 경우에 printf함수의 실행 내용은 나누어서 표현할 수 없다. (a>b) ? printf("참∖n") : printf("거짓∖n"); 컴파일 성공 정상적인 처리를 한다. 도서출판 한산

56 연산자Operators 연산자 우선순위operators precedence
한 개의 수식에 여러 연산자가 포함되어 있는 경우에는 연산자의 우선순위에 따라서 연산을 수행 [연산자의 우선순위에 따른 연산 처리] [먼저 연산 처리할 부분에 소괄호 사용] 2개의 예제를 살펴보았듯이 동일한 수식임에도 불구하고 출력되는 결과 값은 확연하게 차이를 보이고 있다 도서출판 한산

57 연산자Operators [ 연산자의 우선순위 ] 도서출판 한산 순위 연산자 분류 연산자 적용 방향 1 괄호,구조체
( ) [ ] -> . 왼쪽에서 오른쪽 2 단항 ! ~ * & sizeof 오른쪽에서 왼쪽 3 산술 * / % 4 + - 5 이동 << >> 6 관계 < <= > >= 7 == != 8 비트 & 9 ^ 10 | 11 논리 && 12 || 13 조건 ?: 14 대입 = += -= *= /= %= &= |= ^= <<= >>= [ 연산자의 우선순위 ] 도서출판 한산

58 Q&A Thank you. 도서출판 한산


Download ppt "연산자Operators C언어의 기본 구조 도서출판 한산 C언어의 기본 구조 1: #include <stdio.h>"

Similar presentations


Ads by Google