Microsoft PowerPoint - chap04-연산자.pptx

Similar documents
OCW_C언어 기초

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint Presentation

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

untitled

untitled

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - chap12-고급기능.pptx

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap-05.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx

untitled

OCW_C언어 기초

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

Microsoft PowerPoint - Chapter_04.pptx

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

중간고사

Microsoft PowerPoint - Chapter_02.pptx

JAVA PROGRAMMING 실습 02. 표준 입출력

ABC 3장

06 세상을 변화시키는 연산자

11장 포인터

ABC 2장

Microsoft PowerPoint - 2장 변수와 자료형 pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

Chapter_06

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - [2009] 02.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chapter_05.pptx

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

1.4.3 증감연산자 후치증가 a++: 프로그램의한명령줄이끝나고 1을증가시킨값을다시 a에저장. 후치감소 a--: 프로그램의한명령줄이끝나고 1을감소시킨값을다시 a에저장. 전치증가 ++a: 1을증가시킨값을미리 a에저장하고프로그램을수행. 전치감소 --a: 1을감소시킨값을미리

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

1.1.1 컴퓨터의 구성 p.19

Microsoft PowerPoint - chap-11.pptx

본 강의에 들어가기 전

금오공대 컴퓨터공학전공 강의자료

컴파일러


프로그래밍 및 연습 1

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - c2.ppt

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - C_Programming_Basics.ppt [호환 모드]

C 프로그래밊 개요

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

C 언어 프로그래밊 과제 풀이

슬라이드 1

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

KNK_C03_Expr_kor

PowerPoint 프레젠테이션

Microsoft PowerPoint - 7장 배열 pptx

PowerPoint 프레젠테이션

2007백서-001-특집

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

01....b

00목차

(291)본문7

Microsoft PowerPoint - C_9장 포인터 pptx

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

C++ Programming

Microsoft PowerPoint - KNK_C03_Expr_kor

Microsoft PowerPoint - Chapter_08.pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밊

Infinity(∞) Strategy

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - chap-04.pptx

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

ch15

슬라이드 1

, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

chap 5: Trees

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Microsoft PowerPoint - lec3.ppt

Microsoft PowerPoint - chap-04.pptx

OCW_C언어 기초

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - gnu-w10-c-chap12

KNK_C02_form_IO_kor

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

ABC 3장

Transcription:

int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에 대하여 알아본다. 2

목차 연산자의 기본 개념 수식 연산자와 피연산자 산술 연산자 / 증감 연산자 관계 연산자 / 논리 연산자 비트 연산자 / 대입 연산자 조건 연산자 / 형변환 연산자 연산자의 우선순위와 결합 방향 연산자의 우선순위 연산자의 결합 방향 3 연산자의 기본개념 수식 수식(expression) 값을 갖는 요소 수식의 값을 구하는 것을 수식을 평가한다 고 한다. 연산식 : 연산자를 이용한 수식 연산자(operator)와 하나 이상의 피연산자(operand)로 구성 4

연산자의 기본개념 연산자와 피연산자 연산자 연산에 사용되는 기호 +, -, ++, --, ==, >, <, &&,, <<, >> 등 피연산자 연산의 대상이 되는 값 5 연산자의 기본개념 연산자와 피연산자 (1/2) 피연산자의 개수에 따른 6

연산자의 기본개념 연산자와 피연산자 (2/2) 연산자의 기능에 따른 7 산술 연산자 산술 연산자 기본적인 사칙 연산 기능을 제공하는 연산자 8

산술 연산자 산술 연산자의 사용 예(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Ex04_01.c */ int num1, num2; int result; printf("두 개의 정수를 입력하세요 : "); scanf("%d %d", &num1, &num2); 더하기 result = num1 + num2; printf("%d + %d = %d\n", num1, num2, result); 빼기 result = num1 - num2; printf("%d - %d = %d\n", num1, num2, result); 9 산술 연산자 산술 연산자의 사용 예(2/2) 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: } 곱하기 result = num1 * num2; printf("%d * %d = %d\n", num1, num2, result); 나누기 result = num1/ num2; printf("%d / %d = %d\n", num1, num2, result); 나머지 result = num1 % num2; printf("%d %% %d = %d\n", num1, num2, result); 10

산술 연산자 나누기 연산자(/) 정수에 대하여 나누기 연산자(/)를 사용하면, 소수점 이하는 버리고(truncation) 몫을 정수로만 구한다. 나머지 연산자(%) 정수형에 대해서만 사용 가능 11 산술 연산자 나머지 연산자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Ex04_02.c */ int num; int thousands, tens; printf("6자리 정수를 입력하세요 : "); scanf("%d", &num); thousands = num / 1000; 나머지 연산자 사용 tens = num % 1000; printf("%d,%d\n", thousands, tens); } 12

증감 연산자 증감 연산자 변수의 값을 1만큼 증가시키거나 감소시킨다. 증감 연산자는 반드시 변수에만 사용해야 한다. 전위형과 후위형 13 연산자의 기본개념 증감 연산자 증감 연산자의 사용 예(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Ex04_03.c */ int count; int value1, value2; float temperature = 10.5f; count = 10; value1 = ++count; 전위형 printf("value1 = %d, count = %d\n", value1, count); count = 10; value2 = count++; 후위형 printf("value2 = %d, count = %d\n", value2, count); 14

연산자의 기본개념 증감 연산자 증감 연산자의 사용 예(2/2) 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: } count = 10; 전위형 ++count; printf("count = %d\n", count); count = 10; 후위형 count++; printf("count = %d\n", count); temperature++; 실수형에도 증감 연산자를 사용할 수 있다. printf("temperature = %f\n", temperature); 15 관계 연산자 관계 연산자(1/2) 두 수의 값을 비교할 때 사용되는 연산자 수식의 값이 항상 참 또는 거짓이 된다. 16

관계 연산자 관계 연산자(2/2) 두 수의 값이 같은지 비교할 때는 = 연산자가 아니라 == 연산자를 사용해야 한 다. 17 관계 연산자 관계 연산자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: /* Ex04_04.c */ int a = 10; int b = 20; printf("a printf("a printf("a printf("a printf("a printf("a printf("a } = %d, b = %d\n", a, b); > b = %d\n", a > b); >= b = %d\n", a >= b); < b = %d\n", a < b); <= b = %d\n", a <= b); == b = %d\n", a == b);!= b = %d\n", a!= b); 관계 연산자 18

논리 연산자 논리 연산자(1/2) 참과 거짓을 이용한 논리 연산 기능을 제공 AND(&&), OR( ), NOT(!) 연산 논리 연산자를 사용하지 않으면 잘못된 수식을 만들 수 있으므로 주의해야 한다. 19 20 논리 연산자 논리 연산자(2/2) 논리 연산자의 연산 결과

논리 연산자 논리 연산자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 16: 17: /* Ex04_05.c */ int score = 95; } printf("90점 이상 100점 이하인가? : %d\n", score >= 90 && score <= 100); 논리 연산자 printf("0점 또는 100점인가? : %d\n", score == 0 score == 100); 논리 연산자 printf("0점인가? : %d\n",!score); 논리 연산자 21 논리 연산자 논리 연산자의 우선순위 논리 연산자는 관계 연산자보다 우선순위가 낮다. && 연산자가 연산자보다 우선순위가 높고,! 연산자는 관계 연산자보다 우선순 위가 높다. 22

비트 연산자 비트 AND 연산자(&) 각 비트 단위로 AND 연산을 수행 int a = 10; int b = 12; int c = a & b; 23 비트 연산자 16진수와 2진수 변환 2진수는 0과 1만을 사용하고, 16진수는 0~9, A~F를 사용한다. 16진수를 2진수로 변환하려면, 16진수 1자리를 이진수 4자리로 나타내면 된다. 24

비트 연산자 비트 OR 연산자( ) 피연산자의 같은 위치에 있는 비트에 대해서 비트 OR 연산을 수행 int a = 10; int b = 12; int c = a b; 25 비트 연산자 비트 XOR 연산자(^) 피연산자의 같은 위치에 있는 비트에 대해서 비트 XOR 연산을 수행 int a = 10; int b = 12; int c = a ^ b; 26

비트 연산자 비트 NOT 연산자(~) 피연산자의 각 비트를 반전시킨다. 즉, 0은 1로, 1은 0으로 만든다. int a = 10; int c = ~a; 27 비트 연산자 비트 연산자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: /* Ex04_06.c */ int a = 10; // 0x0a int b = 12; // 0x0c int c; } c = a & b; printf("a & b = %08x(%d)\n", c, c); 비트 AND 연산자 c = a b; printf("a b = %08x(%d)\n", c, c); 비트 OR 연산자 c = a ^ b; printf("a ^ b = %08x(%d)\n", c, c); 비트 XOR 연산자 c = ~a; printf("~a = %08x(%d)\n", c, c); 비트 NOT 연산자 28

비트 연산자 비트 이동 연산자(1/2) 비트 왼쪽 이동을 할 때는 왼쪽으로 밀려난 비트가 사라져 버리고, 오른쪽 빈자리 에는 0이 채워진다. 비트 왼쪽 이동은 2N을 곱하는 것이다. 10 << 2 29 비트 연산자 비트 이동 연산자(2/2) 비트 오른쪽 이동을 할 때는 오른쪽으로 밀려난 비트가 사라져 버리고, 왼쪽 빈자 리에는 부호 비트가 채워진다. 비트 오른쪽 이동은 2N으로 나누는 것이다. 10 >> 2 30

비트 연산자 비트 이동 연산자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: /* Ex04_07.c */ int a = 10; // 0x0a int b; b = a << 2; 비트 왼쪽 이동 연산자 printf("a << 2 = %08x(%d)\n", b, b); b = a >> 2; 비트 오른쪽 이동 연산자 printf("a >> 2 = %08x(%d)\n", b, b); } 31 대입 연산자 대입 연산자(1/4) 대입 연산자(=)는 연산자의 좌변(변수)에 우변의 값을 저장한다. 대입 연산자의 좌변(l-value)에는 반드시 변수만 사용해야 한다. 32

대입 연산자 대입 연산자(2/4) 대입 연산을 수행하면, 대입 연산자의 좌변에 있는 l-value의 값이 연산의 결과가 된다. 33 대입 연산자 대입 연산자(3/4) 대입 연산자는 산술 연산자, 비트 연산자와 결합해서 복합 대입 연산자로 사용될 수 있다. 34

대입 연산자 대입 연산자(4/4) 복합 대입 연산자를 다른 연산자와 함께 사용할 때는 복합 대입 연산자는 다른 연 산자에 비해서 우선순위가 낮기 때문에 주의해야 한다. 35 대입 연산자 대입 연산자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: /* Ex04_08.c */ int num; 대입 연산자 num = 5; printf("num = %d\n", num); 복합 대입 연산자 num += 2; printf("num = %d\n", num); num *= 2; 복합 대입 연산자 printf("num = %d\n", num); num = 3; 복합 대입 연산자 printf("num = %d\n", num); num <<= 2; 복합 대입 연산자 printf("num = %d\n", num); } 36

조건 연산자 조건 연산자 유일한 삼항 연산자 37 조건 연산자 조건 연산자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: /* Ex04_09.c */ int a, b; int min, max; printf("두 개의 정수를 입력하세요 : "); scanf("%d %d", &a, &b); min = a < b? a : b; max = a > b? a : b; 조건 연산자 printf("min = %d, max = %d\n", min, max); } 38

형 변환 연산자 암시적인 형 변환(Implicit Type Casting) 컴파일러에 의해서 자동으로 처리되는 형 변환 형 변환이 일어나는 경우 서로 다른 형의 값을 혼합 연산하는 경우 변수에 다른 형의 값을 대입할 때 39 형 변환 연산자 승진에 의한 자동 형 변환 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: /* Ex04_10.c */ short a = 500; short b = 800; short c; printf("a * b = %d\n", a * b); 승진에 의한 형변환 c = a * b; printf("c = %d\n", c); } 40

형 변환 연산자 승진에 의한 형 변환 41 형 변환 연산자 대입 연산 시 형 변환 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: /* Ex04_11.c */ int num; double f; num = 3.14; 대입 연산 시 자동 형변환 printf("num = %d\n", num); f = 123; printf("f = %f\n", f); } 대입 연산 시 자동 형변환 42

형 변환 연산자 명시적인 형 변환(Explicit Type Casting)(1/2) 프로그래머가 명시적으로 형 변환을 하고 싶을 때, 형 변환 연산자를 이용한다. 43 형 변환 연산자 명시적인 형 변환(2/2) 형 변환 연산자를 사용하면, 연산의 결과가 달라질 수 있으므로 주의해야 한다. 연산 전에 형 변환을 하는지, 연산 후에 형 변환을 하는지에 따라 연산의 결과가 달라질 수 있다. 44

형변환 연산자 명시적인 형 변환 예(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Ex04_12.c */ int num; float f; f = 10 / 3; printf("f = %f\n", f); int / int로 처리 f = (float) 10 / 3; printf("f = %f\n", f); 명시적인 형변환 f = (float) 10 / (float) 3; printf("f = %f\n", f); 명시적인 형변환 45 형변환 연산자 명시적인 형 변환 예(2/2) 18: 19: 20: 21: 22: 23: 24: 25: } num = (int) (12.5 + 10.7); printf("num = %d\n", num); num = (int)12.5 + (int)10.7; printf("num = %d\n", num); 명시적인 형변환 명시적인 형변환 46

연산자의 우선순위와 결합 방향 연산자의 우선순위 연산자의 우선순위(1/2) 단항 > 산술 > 관계 > 논리 > 대입 > 콤마 연산자 우선순위 연산자 결합 방향 1 ( ) [ ] ->. 2 ++ -- +(부호) -(부호) sizeof ~! * & (type) 3 */% 4 +- 5 << >> 6 < <= > >= 7 ==!= 8 & 9 ^ 10 11 && 12 13?: 14 = += -= *= /= %= &= = ^= <<= >>= 15,(콤마) 47 연산자의 우선순위와 결합 방향 연산자의 우선순위 연산자의 우선순위(2/2) 기본적인 연산자의 우선순위와는 다른 순서로 연산을 수행하려면 ( )를 사용한다. 48

연산자의 우선순위와 결합 방향 연산자의 결합 방향 연산자의 결합 방향 같은 우선순위의 연산자에 대해서 어느 방향으로 연산을 수행할지 여부 49 연산자의 우선순위와 결합 방향 연산자의 우선순위와 결합 방향 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: /* Ex04_13.c */ int a = 1, b = 2, c = 3; int result; result = a + b * c % 2; printf("result = %d\n", result); result = a > b c > 0; printf("result = %d\n", result); result = a > b c > 0 && b > c; printf("result = %d\n", result); result = ++a * b--; printf("result = %d\n", result); result = a = b = c; printf("result = %d\n", result); } 50

학습정리 연산자의 기본 개념 수식 : C 프로그램에서 값을 갖는 요소 연산자 : +, -, *, /처럼 연산에 사용되는 기호 피연산자 : 연산의 대상이 되는 값 51 학습정리 연산자의 우선 순위와 결합 방향 우선 순위 단항 > 산술 > 관계 > 논리 > 대입 > 콤마 결합 방향 : 같은 우선순위의 연산자에 대해서 어느 방향으로 연산을 수행할지 52

4 장. 연산자 수고하셨습니다. 질문있습니까? NEXT Chapter 5 장. 제어문 53