OCW_C언어 기초

Similar documents
Microsoft PowerPoint - chap04-연산자.pptx

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

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

Microsoft PowerPoint - chap-05.pptx

untitled

untitled

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

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

Microsoft PowerPoint - chap02-C프로그램시작하기.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 \

PowerPoint Presentation

OCW_C언어 기초

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - Chapter_02.pptx

untitled

Microsoft PowerPoint - Chapter_04.pptx

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

11장 포인터

1.1.1 컴퓨터의 구성 p.19

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

중간고사

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

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

C++ Programming

Microsoft PowerPoint - chap-11.pptx

ABC 3장

ABC 2장

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

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

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

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint - 제11장 포인터

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

PowerPoint Presentation

컴파일러

슬라이드 1

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

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

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

쉽게 풀어쓴 C 프로그래밍

C 프로그래밊 개요

KNK_C03_Expr_kor

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - c2.ppt

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

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

Microsoft PowerPoint - KNK_C03_Expr_kor

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

OCW_C언어 기초

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

ch15

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

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

Microsoft PowerPoint - lec3.ppt

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

슬라이드 1

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

PowerPoint 프레젠테이션

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - Chapter_05.pptx

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - chap-06.pptx

Chapter_06

Data Structure

ABC 3장

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

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

; 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

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - Chapter_08.pptx

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

본 강의에 들어가기 전

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - gnu-w10-c-chap12

프로그래밍 및 연습 1

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap03.ppt

PowerPoint 프레젠테이션

기초컴퓨터프로그래밍


Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

슬라이드 1

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

Microsoft PowerPoint - chap-04.pptx

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

Microsoft PowerPoint - C_9장 포인터 pptx

Transcription:

초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주

학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2

목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향 3

연산자의기본개념 수식 (expression) 값을갖는요소 연산식 : 연산자를이용해서만든수식 연산자 (operator) 연산에사용되는기호 피연산자 (operand) 연산의대상이되는값 4

피연산자의수에의한분류 기능에따른분류 의미연산자단항연산자피연산자한개 +, -, ++, --,!, &, ~, sizeof +, -, *, /, %, =, >, <, >=, <=, ==,!=, &&,, &,, ^, 이항연산자피연산자두개 <<, >>, +=, -=, *=, /=, %=, >>=, <<=, &=, =, ^= 삼항연산자피연산자세개?: 연산자 산술연산자 +, -, *, /, % 증감연산자 ++, -- 관계연산자 >, <, >=, <=, ==,!= 논리연산자 &&,,! 비트연산자 &,, ^, ~, <<, >> 대입연산자 =, +=, -=, *=, /=, %=, &=, =, ^=, >>=, <<= 조건연산자?: 그밖의연산자,( 콤마연산자 ), sizeof, 형변환연산자 5

연산자의기본개념 산술연산자 연산자 기능 사용예 연산의결과 + 더하기 5 + 2 7 - 빼기 5-2 3 * 곱하기 5 * 2 10 / 나누기 5 / 2 2 % 나머지구하기 5 % 2 1 6

연산자의기본개념 산술연산자의사용예 1: /* Ex04_01.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int num1, num2; 7: int result; 8: 9: printf(" 두개의정수를입력하세요 : "); 10: scanf("%d %d", &num1, &num2); 11: 7

산술연산자의사용예 연산자의기본개념 12: result = num1 + num2; 더하기 13: printf("%d + %d = %d\n", num1, num2, result); 14: 15: result = num1 - num2; 빼기 16: printf("%d - %d = %d\n", num1, num2, result); 17: 18: result = num1 * num2; 곱하기 19: printf("%d * %d = %d\n", num1, num2, result); 20: 21: result = num1/ num2; 나누기 22: printf("%d / %d = %d\n", num1, num2, result); 23: 24: result = num1 % num2; 나머지 25: printf("%d %% %d = %d\n", num1, num2, result); 26: 27: return 0; 28: } 8

나누기연산자 (/) 정수 / 정수시소수점이하를버림 나머지연산자 (%) 정수형에대해서만사용가능 9

나머지연산자의사용예 1: /* Ex04_02.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int num; 7: int value; 8: 9: printf(" 정수를입력하세요 : "); 10: scanf("%d", &num); 11: 12: value = num % 256; 13: printf("value = %d\n", value); 14: 15: return 0; 16: } 나머지연산자사용 10

증감연산자 구분 증감연산자 연산의결과 전위형 ++num 증가된변수 num의값 --num 감소된변수 num의값 후위형 num++ 증가되기전변수 num의값 num-- 감소되기전변수 num의값 증감연산자는변수에만사용 11

증감연산자의사용예 연산자의기본개념 1: /* Ex04_03.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int num; 7: int n1, n2; 8: float pi = 3.14f; 9: 10: num = 10; 11: n1 = ++num; 12: printf("n1 = %d, num = %d\n", n1, num); 13: 14: num = 10; 15: n2 = num++; 전위형 후위형 16: printf("n2 = %d, num = %d\n", n2, num); 17: 12

증감연산자의사용예 18: num = 10; 19: ++num; 연산자의기본개념 20: printf("num = %d\n", num); 21: 22: num = 10; 23: num++; 전위형 후위형 24: printf("num = %d\n", num); 25: 26: pi++; 27: printf("pi = %f\n", pi); 28: 29: return 0; 30: } 13

관계연산자를포함한수식의값은항상참또는거짓 값이같은지비교 : == 연산자 관계연산자 연산자의의미 연산의결과 a > b a가 b보다큰가? 0 a >= b a가 b보다크거나같은가? 0 a < b a가 b보다작은가? 1 a <= b a가 b보다작거나같은가? 1 a == b a가 b와같은가? 0 a!= b a가 b와다른가? 1 14

관계연산자의사용예 1: /* Ex04_04.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int a = 10; 7: int b = 20; 8: 9: printf("a = %d, b = %d\n", a, b); 10: printf("a > b = %d\n", a > b); 11: printf("a >= b = %d\n", a >= b); 12: printf("a < b = %d\n", a < b); 13: printf("a <= b = %d\n", a <= b); 14: printf("a == b = %d\n", a == b); 15: printf("a!= b = %d\n", a!= b); 16: 17: return 0; 18: } 관계연산자 15

논리연산자 a b a && b a b! a 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 논리연산자를사용하지않은경우 논리연산자를사용하는경우 16

논리연산자의사용예 1: /* Ex04_05.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int grade = 95; 7: 8: printf("grade >= 90 && grade < 100 의값 : %d\n", grade >= 90 && grade <= 100); 10: 11: printf("grade < 0 grade == 100 의값 : %d\n", grade < 0 grade == 100); 13: 14: printf("!grade 값 : %d\n",!grade); 15: 16: return 0; 17: } 17

비트 AND 연산자 (&) a 의비트 b 의비트 a 의비트 & b 의비트 0 0 0 0 1 0 1 0 0 1 1 1 18

16 진수와 2 진수 16진수 2진수 16진수 2진수 16진수 2진수 16진수 2진수 0 0 0000 0 4 0100 0 8 1000 0 c 1100 0 1 0001 0 5 0101 0 9 1001 0 d 1101 0 2 0010 0 6 0110 0 a 1010 0 e 1110 0 3 0011 0 7 0111 0 b 1011 0 f 1111 19

비트 OR 연산자 ( ) a의비트 b의비트 a의비트 b의비트 0 0 0 0 1 1 1 0 1 1 1 1 20

비트 XOR 연산자 (^) a의비트 b의비트 a의비트 ^ b의비트 0 0 0 0 1 1 1 0 1 1 1 0 21

비트 NOT 연산자 (~) a의비트 ~a의비트 0 1 1 0 22

비트연산자의사용예 1: /* Ex04_06.c */ 2: #include <stdio.h> 4: int main(void) 5: { 6: int a = 10; // 0x0a 7: int b = 12; // 0x0c 8: int c; 10: c = a & b; 비트 AND 연산자 11: printf("a & b = %08x(%d)\n", c, c); 13: c = a b; 비트 OR 연산자 14: printf("a b = %08x(%d)\n", c, c); 16: c = a ^ b; 비트 XOR 연산자 17: printf("a ^ b = %08x(%d)\n", c, c); 19: c = ~a; 20: printf("~a = %08x(%d)\n", c, c); 비트 NOT 연산자 22: return 0; 23: } 23

비트이동연산자 (<<, >>) 10 << 2 10 >> 2 24

비트이동연산자의사용예 1: /* Ex04_07.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int a = 10; // 0x0a 7: int b; 8: 9: b = a << 2; 10: printf("a << 2 = %08x(%d)\n", b, b); 11: 12: b = a >> 2; 13: printf("a >> 2 = %08x(%d)\n", b, b); 14: 15: return 0; 16: } 비트왼쪽이동연산자 비트오른쪽이동연산자 25

대입연산자 좌변에있는변수 (l-value) 에우변에있는수식의값 (r-value) 을저장 l-value 에는반드시변수만사용 26

복합대입연산자 복합대입연산자연산자의의미 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 a ^= b a = a ^ b a <<= b a = a << b a >>= b a = a >> b 우선순위가낮기때문에다른연산자와혼합해서사용할때주의 27

비트이동연산자의사용예 1: /* Ex04_08.c */ 2: #include <stdio.h> 4: int main(void) 5: { 6: int num; 8: num = 5; 9: printf("num = %d\n", num); 11: num += 2; 12: printf("num = %d\n", num); 14: num *= 2; 15: printf("num = %d\n", num); 17: num = 3; 18: printf("num = %d\n", num); 20: num <<= 2; 21: printf("num = %d\n", num); 23: return 0; 24: } 대입연산자복합대입연산자복합대입연산자복합대입연산자복합대입연산자 28

조건연산자 조건연산자는유일한삼항연산자 29

조건연산자의사용예 1: /* Ex04_09.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int a, b; 7: int min, max; 8: 9: printf(" 두개의정수를입력하세요 : "); 10: scanf("%d %d", &a, &b); 11: 12: min = a < b? a : b; 13: max = a > b? a : b; 조건연산자 14: 15: printf("min = %d, max = %d\n", min, max); 16: 17: return 0; 18: } 30

암시적인형변환 컴파일러에의해서자동으로처리되는형변환 형변환이일어나는경우 서로다른형의값을혼합연산하는경우 변수에다른형의값을대입할때 31

승진에의한자동형변환예 1: /* Ex04_10.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: short a = 500; 7: short b = 800; 8: short c; 9: 10: printf("a * b = %d\n", a * b); 11: 12: c = a * b; 13: printf("c = %d\n", c); 14: 15: return 0; 16: } 승진에의한형변환 32

승진에의한형변환 33

대입연산시형변환 1: /* Ex04_11.c */ 2: #include <stdio.h> 3: 4: int main(void) 5: { 6: int num; 7: double f; 8: 9: num = 3.14; 10: printf("num = %d\n", num); 11: 12: f = 123; 13: printf("f = %f\n", f); 14: 15: return 0; 16: } 대입연산시자동형변환 대입연산시자동형변환 34

명시적인형변환 35

명시적인형변환 1: /* Ex04_12.c */ 2: #include <stdio.h> 4: int main(void) 5: { 6: int num; 7: float f; 8: 9: f = 10 / 3; 10: printf("f = %f\n", f); 11: 12: f = (float) 10 / 3; 13: printf("f = %f\n", f); 14: 15: f = (float) 10 / (float) 3; 16: printf("f = %f\n", f); 17: int / int 로처리 명시적인형변환 명시적인형변환 36

명시적인형변환 18: num = (int) (12.5 + 10.7); 19: printf("num = %d\n", num); 20: 21: num = (int)12.5 + (int)10.7; 22: printf("num = %d\n", num); 23: 24: return 0; 25: } 명시적인형변환 명시적인형변환 37

연산자의우선순위와결합방향 일반적인연산자의우선순위 단항 > 산술 > 관계 > 논리 > 대입 > 콤마연산자의순 우선순위 연산자 결합방향 1 ( ) [ ] ->. 2 ++ -- +( 부호 ) -( 부호 ) sizeof ~! * & (type) 3 * / % 4 + - 5 << >> 6 < <= > >= 7 ==!= 8 & 9 ^ 10 11 && 12 13?: 14 = += -= *= /= %= &= = ^= <<= >>= 15,( 콤마 ) 38

연산자의우선순위와결합방향 연산자의우선순위변경 39

연산자의우선순위와결합방향 1: /* Ex04_13.c */ 2: #include <stdio.h> 4: int main(void) 5: { 6: int a = 1, b = 2, c = 3; 7: int result; 9: result = a + b * c % 2; 10: printf("result = %d\n", result); 12: result = a > b c > 0; 13: printf("result = %d\n", result); 15: result = a > b c > 0 && b > c; 16: printf("result = %d\n", result); 18: result = ++a * b--; 19: printf("result = %d\n", result); 21: result = a = b = c; 22: printf("result = %d\n", result); 24: return 0; 25: } 40

연산자의우선순위와결합방향 연산자의결합방향 41

학습정리 연산자의기본개념 수식 : C 프로그램에서값을갖는요소 연산자 : +, -, *, / 처럼연산에사용되는기호 피연산자 : 연산의대상이되는값 연산자산술연산자 +, -, *, /, % 증감연산자 ++, -- 관계연산자 >, <, >=, <=, ==,!= 논리연산자 &&,,! 비트연산자 &,, ^, ~, <<, >> 대입연산자 =, +=, -=, *=, /=, %=, &=, =, ^=, >>=, <<= 조건연산자?: 그밖의연산자,( 콤마연산자 ), sizeof, 형변환연산자 42