Microsoft PowerPoint - chap03.ppt

Similar documents
ABC 3장

슬라이드 1

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

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

ABC 3장

Microsoft PowerPoint - Chapter_04.pptx

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

OCW_C언어 기초

ABC 2장

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

Microsoft PowerPoint - chap06-2pointer.ppt

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

OCW_C언어 기초

Microsoft PowerPoint - chap-04.pptx

Microsoft PowerPoint - chap-04.pptx

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

슬라이드 1

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

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

슬라이드 1

본 강의에 들어가기 전

Microsoft PowerPoint - chap04-연산자.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - c2.ppt

슬라이드 1

슬라이드 1

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

Microsoft PowerPoint - ch01.ppt

03 상수, 변수, 자료형

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

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

Microsoft PowerPoint - [2009] 02.pptx

K&R2 Reference Manual 번역본

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap06-1Array.ppt

<4D F736F F F696E74202D20C1A634C0E520BAAFBCF6BFCDC0DAB7E1C7FC>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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

PowerPoint Presentation

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

쉽게 풀어쓴 C 프로그래밍

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

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

11장 포인터

Microsoft PowerPoint - C++ 5 .pptx

untitled

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

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

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint - chap-05.pptx

쉽게풀어쓴 C 언어 Express 제 4 장변수와자료형 이번장에서학습할내용 제 4 장변수와자료형 제 4 장변수와자료형 * 변수와상수의개념이해 * 자료형 * 정수형 * 실수형 * 문자형 * 기호상수사용 * 오버플로우와언더플로우이해 이번장에서는변수와각종자료형을살펴봅니다.

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

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

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

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

untitled

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

Microsoft PowerPoint - chap06.ppt

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

C++ Programming

C 프로그래밊 개요

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

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

untitled

Microsoft PowerPoint - chap09.ppt

본 강의에 들어가기 전

Microsoft PowerPoint - chap08.ppt

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

KNK_C02_form_IO_kor

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

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

ABC 6장

강의 개요

PowerPoint 프레젠테이션

C++-¿Ïº®Çؼ³10Àå

Microsoft PowerPoint - Chapter 8_C언어

Microsoft PowerPoint - 제11장 포인터

PowerPoint 프레젠테이션

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

2 장수의체계 1. 10진수 2. 2진수 3. 8진수와 16진수 4. 진법변환 5. 2진정수연산과보수 6. 2진부동소수점수의표현 한국기술교육대학교전기전자통신공학부전자전공 1

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - KNK_C01_intro_kor

KNK_C01_intro_kor

Chapter_06

컴파일러

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

중간고사

PowerPoint Presentation

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

쉽게 풀어쓴 C 프로그래밍


Transcription:

2010-1 학기프로그래밍입문 (1) 3 장기본자료형 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr

목차 3.1 선언, 수식, 배정 3.2 기본자료형 3.3 문자및 char 자료형 3.4 int 자료형 3.5 정수적형 short, long, unsigned 3.6 부동형 3.7 typedef의사용 3.8 sizeof 연산자 3.9 getchar() 와 putchar() 의사용 3.10 수학함수 3.11 변환과캐스트 3-1

3.1 선언, 수식, 배정 모든변수는사용되기전에반드시선언되어야함 일반적인프로그램의시작형태 #include <stdio.h> int main(void){ int a, b, c; /* declaration */ float x, y = 3.3, z = -7.7; /* declaration with initialization */ printf("input two integers: "); /* function call */ scanf("%d%d", &b, &c); /* function call */ a = b + c; /* assignment statement */ x = y + z; /* assignment statement */... 3-2

변수선언의목적 변수의메모리공간확보 올바른연산자선택 - int a, b, c; a = b + c; - float d, e, f; d = e + f; - 위의두 + 는기호는같지만, 위의 + 는정수 + 이고, 밑의 + 는실수 + 임 3-3

참조 정수와실수연산이다른이유 - 컴퓨터에서정수와실수의표현방법이다르기때문 정수 - 부호가있는 2의보수로표현 - 1 비트 : 부호비트 (1 : 음수, 0 : 양수 ) -나머지비트: 수의2의보수 3-4

정수의표현 0 1 2... 31 부호 수의 2 의보수 예 2 : 00000000 00000000 00000000 00000010-2 : 11111111 11111111 11111111 11111110 3-5

실수 - 부동소수로표현 - 모든수를지수형태로변환하여부호, 지수, 가수부로나누어저장 - IEEE 부동소수 3-6

실수의표현 (IEEE 부동소수 ) 0 1 2... 8 9... 31 부호 지수부가수부 (1 hidden bit) 예 2.0 = 1.0 ⅹ2 1 : 01000000 00000000 00000000 00000010 4.0 = 1.0 ⅹ2 2 : 01000000 10000000 00000000 00000010-2.0 = -1.0 ⅹ2 1 : 11000000 00000000 00000000 00000010 3-7

블록, 수식, 문장 블록 - 선언과문장이중괄호로둘러싸져있는것 -선언은반드시문장앞에와야함 수식 - 상수, 변수, 연산자, 함수호출등의의미있는결합 - 상수, 변수, 함수호출은그자체가수식임 - 대부분의수식은값을가짐 3-8

문장 - 수식뒤에세미콜론이오면, 수식은문장이됨 i = 7; - "i = 7" 은수식이고그값은 7임 - "i = 7;" 은문장임 3-9

3.2 기본자료형 완전한형태 char signed char unsigned char signed short int signed int signed long int unsigned short int unsigned int unsigned long int float double long double 축약된형태 char signed char unsigned char short int long unsigned short unsigned unsigned long float double long double 3-10

기본형의기능별분류 - 정수적형 char signed char unsigned char short int long unsigned short unsigned unsigned long - 부동형 float double long double - 산술형정수적형 + 부동형 3-11

3.3 문자및 char 자료형 문자 모든정수적형의변수는문자를표현하는데사용될수있음 'a', '+' 와같은상수는 char 형이아니라 int 형임 - C 에는 char 형상수가없음 - C++ 에서문자상수는 char 형임 3-12

char 자료형 char 형변수는문자와정수값을저장하는데사용됨 보통각char는메모리의1 바이트에저장됨 - 256개의값을저장할수있음 - 이값들중일부분만이실제인쇄문자임 ( 소문자, 대문자, 숫자, 마침표, 특수문자등 ) - 공백, 탭, 개행문자같은여백도있음 대부분의컴퓨터는 ASCII나 EBCDIC 문자코드사용 3-13

ASCII 코드에서문자상수와대응되는정수값 문자상수대응하는값 문자상수대응하는값 문자상수대응하는값 문자상수대응하는값 'a' 'b' 'c'... 'z' 97 98 99... 122 'A' 'B' 'C'... 'Z' 65 66 67... 90 '0' '1' '2'... '9' 48 49 50... 57 '&' '*' '+' 38 42 43 3-14

주의 - 숫자를표현하는문자상수의코드값과실제그숫자값은특별한관계가없음 - 즉, '2' 의값은 2가아님 - 'a', 'b', 'c' 등의코드값은순서적임 - 이것은문자와단어를사전적순서로정렬할때편리함 3-15

인쇄할수없는문자는탈출기법을사용하여표현함 - 예를들어, 수평탭문자는문자상수와문자열에서 t로표현됨 - t가 와 t 두문자로기술되지만, 이것은한문자임 프로그램내에서특별한의미를갖는문자들이본래의의미를갖기위해서도탈출기법을사용해야함 - 큰따옴표를포함하는 "abc" 라는문자열은 " "abc "" 로표기함 - 작은따옴표문자상수 ' 는 ' '' 로표기함 3-16

특수문자 문자이름 기술형태 정수값 경고역슬래시백스페이스캐리지리턴큰따옴표폼피드수평탭개형널문자작은따옴표수직탭 \a \\ \b \r \" \f \t \n \0 \' \v 7 92 8 13 34 12 9 10 0 39 11 3-17

char 형 각값은메모리에이진수로저장됨 예 ) char c = 'a'; - 변수 c 는메모리 1 바이트에 01100001 로저장됨 (ASCII 로저장 ) - 이값을계산하면 97 이됨 (ASCII 값 ) ANSI C 는 char, signed char, unsigned char 를제공 3-18

char는시스템에따라 signed char 또는 unsigned char와같음 세가지의 char 형은각각 1 바이트에저장됨 (256개의값표현 ) signed char 형의값의범위 : -128 ~ 127 unsigned char 형의범위 : 0 ~ 255 3-19

예제 (1) char c = 'a'; printf("%c", c); /* a is printed */ printf("%d", c); /* 97 is printed */ printf("%c%c%c", c, c + 1, c + 2); /* abc is printed */ 3-20

예제 (2) char c; int i; for (i = 'a'; i <= 'z'; ++i) printf("%c", i); /* abc... z is printed */ for (c = 65; c <= 90; ++c) printf("%c", c); /* ABC... Z is printed */ for (c = '0'; c <= '9'; ++c) printf("%d ", c); /* 48 49... 57 is printed */ 3-21

3.4 int 자료형 C 언어의기본적인자료형 int 형은 2 바이트 (= 16 비트 ) 나 4 바이트 (= 32 비트 ) 에저장됨 - 즉, 정수의일부분만저장할수있음 3-22

값의범위 - 4 바이트워드컴퓨터 -최소 = -2 31 = -2147483648 -최대 = +2 31-1 = +2147483647-2 바이트워드컴퓨터 - 최소 = -2 15 = -32768 - 최대 = +2 15-1 = +32767 3-23

정수오버플로 - 값의범위를초과할때발생 ( 주의필요 ) #define BIG 2000000000 /* 2 billion */ int main(void){ int a, b = BIG, c = BIG; a = b + c; /* out of range? */... - 정수오버플로가발생해도프로그램은계속수행되지만, 논리적으로부정확한값이계산됨 3-24

3.5 정수적형 short, long, unsigned short 자료형은기억장소를절약하고자하는경우에사용 long 형은큰정수값을다룰때사용 short 형은 2 바이트에저장되고, long 형은 4 바이트에저장됨 - 4 바이트워드컴퓨터 : int 형과 long 형크기같음 - 2 바이트워드컴퓨터 : int 형과 short 형크기같음 unsigned 형의변수는음수가아닌정수를표현할때사용함 3-25

정수상수에그형을명시하기위해서는접미사를붙일수있음 접미사가붙지않은정수상수의형은 int, long, unsigned long 중하나임 -시스템은세가지형중그정수상수를표현할수있는첫번째것을선택하여그정수상수의형으로함 - 예를들어, 2 바이트워드컴퓨터에서상수 32000 은 int 형이고, 33000은 long 형임 3-26

접미사 u 또는 U l 또는 L ul 또는 UL unsigned long unsigned long 37U 37L 37UL 3-27

3.6 부동형 실수값을다루기위해사용함 정수를부동형상수로표현할때에는소수점을사용해야함 -상수1.0과2.0은double형이지만, -상수3은int형임 접미사 f 또는 F l 또는 L float long double 3.7F 3.7L 3-28

부동형상수표기법 십진표기법 - 1.0 또는 1. 또는.0001 지수표기법 - 1.234567e5 (= 1.234567 X 10 5 ) 올바른부동형상수 - 3.14159, 314.159e-2F, 0e0, 1. 3-29

잘못된부동형상수 - 3.14,159 /* comma not allowed */ - 314159 /* decimal point or exponential part needed */ -.e0 /* integer part or fractional part needed */ - -3.14159 /* this is a floating constant expression */ 3-30

부동형의값의범위 부동형에배정될수있는값은정밀도와범위라는속성으로기술됨 - 정밀도 : 부동형값이가질수있는유효숫자수 - 범위 : 부동형의변수에저장될수있는가장큰양수와가장작은양수의한계 3-31

float 형 - 정밀도 : 대략유효숫자 6자리 - 범위 : 대략 10-38 에서 10 +38 double 형 - 정밀도 : 대략유효숫자 15자리 - 범위 : 대략 10-308 에서 10 +308 3-32

예제 x = 123.45123451234512345; - x의실제값 - double : 0.123451234512345 10 3 - float : 0.123451 10 3 주의 - 모든실수를다표현할수는없다. - 정수산술연산과달리부동형산술연산은정확하지않다. 3-33

typedef 의목적 3.7 typedef - 긴선언문을축약해쓸수있음 - 사용목적에맞게형이름을결정할수있음 - 프로그램이식을쉽게할수있게함 예제 typedef char uppercase; typedef int INCHES, FEET; uppercase u; INCHES length, width; 3-34

3.8 sizeof 객체를저장하는데필요한바이트수를알아내기위해사용 다른단항연산자와동일한우선순위와결합법칙을가짐 사용법 -sizeof(object) 3-35

기본형들의크기비교 sizeof(char) = 1 sizeof(short) <= sizeof(int) <= sizeof(long) sizeof(signed) = sizeof(unsigned) = sizeof(int) sizeof(float) <= sizeof(double) <= sizeof(long double) 3-36

3.9 getchar() 와 putchar() 의사용 stdio.h 에정의된매크로 - getchar() : 키보드에서문자를읽음 - putchar() : 화면에문자를출력함 char 형은 1 바이트, int 형은 2 바이트나 4 바이트에저장됨 -int형은char 형이저장할수있는모든값과그이상을저장할수있음 - char 형을작은정수형으로생각할수있음 - 반대로 int 형을큰문자형으로볼수있음 3-37

예제 1 #include <stdio.h> int main(void){ int c; while ((c = getchar())!= EOF) { /* #define EOF (-1) */ putchar(c); putchar(c); } return 0; } ( 주의 ) c 가 char 가아니라 int 로선언되어있음 3-38

예제 2 /* In file capitalize.c */ #include <stdio.h> int main(void){ int c; while ((c = getchar())!= EOF) if (c >= 'a' && c <= 'z') putchar(c + 'A' - 'a'); else putchar(c); return 0; } 3-39

3.10 수학함수 C 에는수학함수가내장되어있지않음 다음과같은수학함수는표준라이브러리의일부분인수학라이브러리로제공됨 sqrt() pow() exp() log() sin() cos() tan() 이러한수학함수를사용하기위해서는 <math.h> 를포함시켜야함 3-40

정수용 abs() 와실수용 fabs() 를구별해서사용해야함 UNIX에서는수학라이브러리가표준라이브러리가아니기때문에수학라이브러리를사용하는경우컴파일할때명시해야함 cc pgm.c -lm 3-41

예제 #include <math.h> #include <stdio.h> int main(void){ double x;.... } printf("\n%15s%22.15e\n%15s%22.15e\n%15s%22. 15e\n\n", "x = ", x, "sqrt(x) = ", sqrt(x), "pow(x, x) = ", pow(x, x));.... 3-42

3.11 변환과캐스트 산술수식은값과형을가짐 필요에따라수식을구성하는형들은변환이일어남 정수적승격 - signed/unsigned char, signed/unsigned short, 열거형, signed/unsigned int 는정수적수식에사용될수있음 - 이수식에서모든형들은 int 나 unsigned int 로변환됨 3-43

예제 char c = 'A'; printf("%c\n", c); - printf에서 c는정수적승격이일어나 int 형이됨 3-44

일반적인산술변환 산술변환은이항연산자의피연산자를계산할때일어남 규칙둘중하나가 long double 형이면, 다른하나는 long double 형으로변환아니면, 둘중하나가 double 형이면, 다른하나는 double 형으로변환아니면, 둘중하나가 float 형이면, 다른하나는 float 형으로변환아니면, 정수적승격이일어나고, 다음규칙사용 : 둘중하나가 unsigned long 형이면, 다른하나는 unsigned long 형으로변환아니면, 둘중하나가 long 형이고다른하나가 unsigned 형이면, 다음수행 : 만일 long 형이 unsigned 형의모든값을표현할수있다면, unsigned 형은 long 형으로변환아니면, 두피연산자는 unsigned long 형으로변환아니면, 둘중하나가 long 형이면, 다른하나는 long 형으로변환아니면, 둘중하나가 unsigned 형이면, 다른하나는 unsigned 형으로변환아니면, 두피연산자는 int 형을가짐 3-45

자동변환 묵시적변환 강압 승격 확대 3-46

예제 선언 char c; short s; int i; long l; unsigned u; unsigned long ul; float f; double d; long double ld; 수식형수식형 c - s / i int u * 7 - i unsigned u * 2.0 - i double f * 7 - i float c + 3 int 7 * s * ul unsigned long c + 5.0 double ld + c long double d + s double u - ul unsigned long 2 * i / l long u l system-dependent 3-47

캐스트 명시적인변환 캐스트예제 (double) i (long) ('A' + 1.0) x = (float) ((int) y + 1) (double) (x = 77) 잘못된캐스트 (double) x = 77 /* equivalent to ((double) x) = 77, error */ 3-48

3.12 16 진상수와 8 진상수 C 원시코드에서 0으로시작하는양의정수상수는 8 진정수이고 0x 또는 0X로시작하는양의정수상수는 16진정수임 3-49

예제 #include <stdio.h> int main(void) { printf("%d %x %o\n", 19, 19, 19); /* 19 13 23 */ } printf("%d %x %o\n", 0x1c, 0x1c, 0x1c); /* 28 1c 34 */ printf("%d %x %o\n", 017, 017, 017); /* 15 f 17 */ printf("%d\n", 11 + 0x11 + 011); /* 37 */ printf("%x\n", 2097151); /* 1fffff */ printf("%d\n", 0x1FfFFf); /* 2097151 */ return 0; 3-50

질의및응답 - 끝 - 3-51