1 / 73

C 언어 및 실습 C Language and Practice

C 언어 및 실습 C Language and Practice. 숫자와 문자 숫자 ( 정수 , 실수 ) 정수 ( 정수형 수 ) : 소수점이 없는 수 8, 7, 9 정수형 ( integer : int ) 크기 : 4 바이트 정수형변수 (a) : 정수를 저장하는 저장장소 이름 선언 int a; 실수 ( 실수형 수 ) : 수숫점을 가진 수 8.3, 4.0, 9,333 실수형 ( float) 크기 : 4 바이트 배정도 실수형 ( double) 크기 : 8 바이트

meda
Download Presentation

C 언어 및 실습 C Language and Practice

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C언어 및 실습C Language and Practice 숫자와 문자 숫자( 정수, 실수) 정수(정수형수): 소수점이 없는 수 8, 7, 9 정수형(integer : int )크기: 4바이트 정수형변수(a): 정수를 저장하는 저장장소 이름 선언 inta; 실수(실수형 수): 수숫점을 가진 수 8.3, 4.0, 9,333 실수형( float) 크기: 4바이트 배정도 실수형( double) 크기: 8바이트 실수형변수(b): 실수을 저장하는 저장장소 이름 선언 float b; double b; 문자(문자, 문자열) 문자 : 문자 든 숫자든 한자리 단어 ‘A’, ‘1’ (문자 양 옆에 단일인용부호사용) 문자형(character : char) 크기 : 1바이트 문자형변수선언(c): 하나의 문자를 저장하는 저장장소 이름 선언 char c; 문자열 : 하나 또는 그 이상의 문자 또는 숫자들 “A”, “abc”. “123” (문자(들) 양옆에 이중인용부호사용) 문자열형 크기: 문자수+ 1 바이트 문자열 선언 (d): 하나 또는그 이상의 문자를 저장하는 저장장소(배열)이름 선언 chard[10]; Chap 3. 기본 자료형 및 문자열

  2. 단원의 개요 단원의 학습목표 학습 유의점 1. C가 사용하는 기본적인 자료형인 정수형과 부동소수형의 차이점을 파악한다. 2. 기본 자료형으로 상수나 변수를 선언하는 방법을 알아본다. 3. 서로 다른 자료형에 대한 형 변환 규칙과 변환 과정을 이해한다. 1. 기본 자료형의 기억장소 내의 형태를 이해하여 각 자료의 사용용도 및 범위를 스스로 파악한다. 2. 문자형의 경우 문자형 상수와 문자열과의 구분을 명확히 한다. 3. 개행문자의 이해를 위해 프로그램 작성시 이들의 기능을 첨가하여 실행해 본다. 단원의 학습계획 사용된 함수 1. 정수형과 실수형의정수형과 실수형 자료의 기억장소 형태 상수와 변수 를 이해한다. 정수형(int / short / long / unsign)과 실수형(float / double)의 상수와 변수 들의 차이점을 파악한다. 2. 형 변환 및 규칙 형 변환의 우선순위를 이해한다. 3. 개행문자(확장열)개행문자의 개념을 정확하게 이해하고, 특히, 한 문자에 해당된다는 것을 숙지 한다. • 연산자 : cast 형 식 : (형 명칭)수식 : 34pp sizeof : 42pp 형 식 : intsizeof(형 명칭 | 수식) • 함 수 : printf( ) : 1장-23pp 형 식 : printf(“형식문자열”, 인수); scanf( ) :45pp 형 식 : scanf(“형식문자열”, 인수); scanf(“형식문자열”, &인수);

  3. 기본출력문: prinf( ) : 컴퓨터화면에출력하시오. #include <stdio.h> void main() { int a = 65; // 정수형변수 선언 및 변수값 초기화 printf("부호있는10진수 정수= %d \n", a); printf("부호없는8진수 정수= %o \n", a); printf("부호없는16진수 정수= %x \n", a ); float b =65.0; // 실수형변수 선언 및 변수값초기화 printf("부동소수점형 실수= %f \n", b); printf("부동소수점형E표기 실수= %e \n", b); printf("부동소수점형f.e중 짧은 실수= %e \n", b); printf("문자 = %c \n", a); char array[5] = {"ABCD"}; // 문자열변수선언및초기화 printf("문자열 = %s \n",array); } • printf() • 여러 가지 형식화된 내용을 표준출력(stdout, 화면) 으로 출력하는 함수 • printf() 함수의 일반 형식 • 변환(서식) 문자 의 종류 형 식 : printf(“형식 문자열”, 인수) 하는일: 인수의 값을 화면에 원하는 형식으로 출력 형식 문자열 : 단순문자, 변환(서식)문자, 개행문자들로 구성 인 자 : 변환(서식)문자로 변환할 변수 예 : printf(" %d%f%e%c \n", i, f, d, c);

  4. 1(상수) -3(상수) 2007 302 i i i i n n n n t t t t C(변수) B(변수) D(변수) 기본자료형 • 프로그램에서 사용되는 기본적인 자료 • 상수[常數]- 변하지 않는 값 • 변수[變數]- 프로그램 실행 시 다른 값으로 변할 수 있음 -3 A(변수)

  5. 1 -3 2007 302 i i i i n n n n t t t t c b d 기본자료형 • 프로그램에서 사용되는 기본적인 자료 • 상수- 변하지 않는 값( = 자료[data] ) • 변수- 프로그램 실행 시 다른 값으로 변할 수 있음 -3 1 a #include <stdio.h> void main() { int a; // a는 정수형(int) 변수 int b; // b는 변수 int c = 2007; // c는 변수, 2007은 상수,c에 2007이 저장(=대입) int d = 302; // d는 변수, 302는상수, d에 302를대입 a = 1; // 변수a에 상수 1을 대입 b = 2; // 변수 b에 상수 2를대입 a = -3; // 변수b에상수-3을 대입 printf("각 변수 a,b,c,d에 저장된 값은 ? \n"); printf(" a = %d \n b = %d \n c = %d \n d = %d \n", a,b,c,d); }

  6. 참고1. ASCII코드 • ASCII 코드 • American Standard Code for Information Interchange • 미국표준협회(ANSI)에서 제정한 정보교환용 미국표준부호 • 문자, 숫자, 특수문자에 수치 값(numeric Value)을 부여한 부호체계 • 각숫자 , 문자 또는 기호는 1 바이트로 표현 • C언어에서 문자 및 특수문자 표현에 사용됨 • 십진수(decimal : DEC), 16진수(hexadecimal:HEX), 8진수(octal:OCT), 이진수(binary)

  7. Void Character Double 5가지 기본 자료형 Integer Float 기본 자료형(data type) • 5가지 기본 자료형 값이 없음 - void 문자데이터(문자형) - char(8bits) (2)배정도 실수(실수형) - double(8bytes) 부호 있는 정수(정수형) - int(4bytes) 실수(실수형) - float(4bytes)

  8. 5가지 기본 자료형 A c h a r 0 0 0 0 0 0 1 0 1 0 7 6 5 4 3 2 1 0 1Byte(8bits) 기본자료형-문자형 문자형 • 하나의 문자를 표현하는 형 • ASCII 코드표를 이용해 저장 • 8bit 크기로 저장 • 5가지 기본 자료형 // 문자형(char)자료형 #include <stdio.h> void main() { char a; // a는 하나의문자가 들어갈 문자형 변수 선언 a = 'A'; // 문자형 변수a에 문자 ‘A’를 대입(저장) printf("문자변수 a에 저장된 값은%c 이다\n", a); printf("문자변수 a의 ASCII 코드값은%d 이다\n", a); } Void Character Character char a; Double Integer a = ‘A’; Float a 문자 A코드 값은 십진수로 65이며고16진수는 41이고 이진수로는 01000001이다

  9. 문자형 • 하나의 문자를 표현하는 형 • ASCII 코드표를 이용해 저장 • 8bit 크기로 저장 Void Character char a; Double A 5가지 기본 자료형 Integer a = ‘A’; /*십진수[decimal] 65 */ Float a c h a r 0 0 0 0 0 0 1 1 7 6 5 4 3 2 1 0 1Byte(8bits) 기본자료형-문자형 • 5가지 기본 자료형

  10. Integer Void Character Double 5가지 기본 자료형 65 Integer Float i n t ······ 0 0 0 0 0 0 0 0 0 1 0 1 31 8 7 6 5 4 3 2 1 0 2Bytes or 4 Bytes 기본자료형-정수형 정수형 • 정수값을 표현하는 형 • 정수의 크기에 따라 2bytes / 4bytes 선택가능 ☞ short -> 2bytes ☞ int -> 2bytes 또는 4 bytes ☞ long -> 4bytes • int 형의 크기는 시스템 종속적 ☞ 16bit OS -> 2bytes / 32bit OS -> 4bytes • 필요에 따라 양수만 표현 가능 • 5가지 기본 자료형 Integer int a; a = 65; a

  11. 기본자료형-정수형 // 정수형(int) 자료형 #include <stdio.h> void main() { short s; // s는 정수가 들어갈 2 바이트크기의 정수형변수 inta; // a는 정수가 들어갈 4 바이트크기의 정수형변수 long b; // b는 정수가 들어갈 4 바이트크기의 정수형변수 s = 65; // 정수형변수 s에 정수65 대입(저장) a = 64; // 정수형변수a에 정수64 대입 b = 63; // 정수형변수b에 정수63 대입 printf(" short-정수형변수s= %d 바이트\n int- 정수형변수a= %d 바이트\n long- 정수형변수b= %d 바이트\n\n", sizeof(s), sizeof(a), sizeof(b)); printf(" short-정수형변수s에저장된 값은%d 이다\n", s); printf(" int- 정수형변수a에저장된 값은%d 이다\n", a); printf(" long- 정수형변수b에저장된 값은%d 이다\n", b); }

  12. 9 ········ 31 + 0 ········ 6 Float Integer Void Character 314159 Double + Double Integer 31.41592 Float f l o a t 2 기본자료형-실수형 • 5가지 기본 자료형 실수형/배정도 실수형 • 소수점이 존재하는 수치를 표현하는 형 • 실수의 크기에 따라float / double / long double선택 ☞ float형 -> 4bytes ☞ double형 -> 8bytes ☞ long double형 -> 8bytes 또는 10bytes flaot a; a = 31.41592; ☞ 31.41592 = 0.3141592ⅹ102 = 0.314159E2 a 4 Bytes

  13. 기본자료형-실수형 // 실수형(float, double) 자료형 #include <stdio.h> void main(){ float a; // a는실수가 들어갈4 바이트크기의실수형변수 double d; // d는배정도실수들어갈8 바이트크기의실수형변수 long double ld; // a는배배정도실수가들어갈8 또는 바이트크기의실수변수 a = 31.41592; // 실수형변수a에31.41592가 저장됨 d = 31.41592; // 배정도실수형변수d에31.41592가 저장됨 ld = 31.41592; // 배배정도형실수형변수ld에31.41592가 저장됨 printf(" 실수형변수a = %d 바이트\n 배정도실수형변수d = %d 바이트 \n 배배정도실수형변수ld= %d 바이트\n\n", sizeof(a), sizeof(d), sizeof(ld)); printf(" 실수형변수a에 저장된 값은%f 이다\n", a); printf(" 배정도실수형변수d에 저장된 값은%f 이다\n", d); printf(" 배배정도실수형변수ld에 저장된 값은%f 이다\n", ld); }

  14. Integer Void Character Double 5가지 기본 자료형 Integer Float 기본자료형- 형없음(Void) • 5가지 기본 자료형 Void형(형없음) • 특수한 형태로 타입이 존재하지 않음을 의미 • 주로 함수의 리턴 타입을 정의할 때 사용 ex) void main() ☞ 함수가 종료될 떄 값을 전달하지 않음 Void

  15. 기본자료형–singed, unsigned // sizeof()함수를 이용한 자료형의 크기를 알아본다 #include <stdio.h> void main() { printf(" 문자형[char]변수의 크기= %d 바이트\n", sizeof(char)); printf(" 정수형[int]변수의 크기= %d 바이트\n", sizeof(int)); printf(" 실수형[float]변수의 크기= %d 바이트\n", sizeof(float)); printf(" 배정도실수형[double]변수의 크기= %d 바이트\n", sizeof(double)); } • 5가지 기본 자료형 • 자료형수정자(type modifier) • char, int, float, double을 좀 더 적합한 형태로 수정 • signed : 양수와 음수의 표현이 가능, signed char와 signed int에 사용, 디폴트 • unsigned : 양수만표현 가능, unsigned char, unsigned int( = unsigned)에 사용 • short : int에 사용(short int (=short) • long : int, double에 사용( longint(=long), long double ) • 즉, unsigned, short, long 뒤에 정수형 자료형int는 생략 할 수 있다. • 예) long int k;  long k;

  16. 기본자료형(int,long.short,char,float,double, singed, unsigned) • 변수의 자료형과 저장된 값의 범위 unsigned int (10^-38 ~ 10^38) 15 (10^-308 ~ 10^308) 그림 3-1 C 자료형의 크기와 표현 범위 C 언어에서의 기본적인 자료형과 저장된 값의 범위

  17. 기본자료형- 정수형 • 정수형(int) • C언어에서 표현 가능한 정수형 상수 • 10진수(O), 8진수(O), 16진수(O). 2진수(X). • 소수점이 없는 정수값을 가짐( 2(O),3(O) -4(O), 3.0(X)) • 정수형 변수 선언의 일반 형식 int 변수명1[, ... , 변수명n]; 혹 은 int 변수명1=초기값[, ... , 변수명n=초기값];

  18. // 정수형 변수선언 예 #include <stdio.h> void main() { int a; int a, b, c; inti, j, k; int p=2, m=3; short p; long i; long k; unsigned m; : } 기본자료형-정수형 • 정수형(int) • 정수형 변수 • 정수형 변수 선언의 예 • 정수형 선언에서 예약어int는 short, long, unsigned와 함께 사용할 수 있으며, 이 경우 int는 생략 가능 • unsigned [int]로 선언된 변수는 첫 번째 비트를 부호 비트로 사용하지 않고 자료 비트로 사용( 32비트머신의인경우1비트의 부호와 31비트의 정수표현). • 변수값이 모두 양수를 갖는 경우 사용 • 32비트가 1워드인 컴퓨터에서의 값의 표현범위 ※ 주의: int로 선언된 정수형 변수의 크기는 기종에 따라 서로 차이가 있음

  19. 기본자료형-정수형 int -2,147,483,648 ~ 2,147,483,647 • 정수형(int) • 예제 1 • 정수형변수(k)가 가질 수 있는 최대값을 초기값으로 저장하고 난 뒤에 1과 2를 차례로 더하는 프로그램[ K+1일때어떤일이 발생하는지 ? ] • 실행결과 오버플로우 #include <stdio.h> main() { int k= 2147483647; printf("k= %d k+1=%d k+2=%d\n", k, k+1, k+2); } : 선언된 정수형변수에 저장되는 값이 최대크기 값인 2,147,483,647 을 초과하면 오버프로우(overflow), 이고 -2,147,483,648보다 작아지면 언더플로우(under flow)이다.

  20. 기본자료형-정수형 • 정수형(int) • 예제 2 • 정수형변수(K,i)에 저장된 초기값을 읽어 몫(/)과 나머지(%)를 구하는 프로그램 • 변환문자 참조 #include <stdio.h> main() { intk=87, i=5; printf(" %d/%d= %d\n", k, i, k/i); // 몫 =K/i printf(" %d%%%d = %d\n", k, i, k%i); // 실수형변수를 이용한 나머지연산 K%i은 불가능. }

  21. 31 7 8 0 6 2 + 314159 지수부분 부호 소수부분 기본자료형-실수형 • 실수형(float) • 오직 10진수만을 사용하며, 지수 부분은 e 혹은 E를 써서 표시 • 자료의 값은 실수값이며, 지수 부분(Exponential part)과 소수 부분(Fraction part)으로 나뉘어 저장됨 • 예) IBM PC/AT에서 31.14592를 기억시킨 기억 장소의 형태 • 31.41592 = 0.3141592 ⅹ 102 = 0.314159E2 • 실수형 변수 선언의 일반 형식 float 변수명1[, ... , 변수명n]; float 변수명1=초기값[, ... , 변수명n =초기값];

  22. 기본자료형-실수형 • 실수형(float) • 실수형 변수 • 실수형 변수 선언의 예 • 보통 실수형은32비트 정도로 수를 표현하기 때문에 매우 큰 수와 매우 작은 수를 표시할 때에는 오차가 발생할 수 있음 • 오차를 줄이려면 64비트 정도로 수를 표현하는 배정도형(double precision)을 사용

  23. 기본자료형-실수형 • 실수형(float) • 예제 3 • 정수형과 실수형의 계산의 차이점을 보이기 위한 프로그램 • 실행결과 #include <stdio.h> main() { inti, j, k; float f; i=7; j=9; k=i/j;/* 정수형 계산 k = 7 / 9 */ f=(float)i/(float)j;/* 실수형 계산 f = 7.0/9.0 */ printf("i=%d j=%d (int)i/j=%d (float)i/j=%f \n", i, j, k, f); }

  24. 기본자료형-실수형 • 실수형(float) • 예제 4 • 실수형 변수에 실수값을 기억시켜 출력하는 프로그램 • 실행결과 #include <stdio.h> main() { float a=3.5, b=4.0; printf(“a= %f b= %f\n”, a, b); }

  25. 기본자료형-문자형 • 문자형(char) • 문자를 문자열(string)이나 명칭이 아닌 하나의 문자 상수(character constant)로 취급할 경우는 단일 인용 부호( ‘’)로 묶어야 함 • 문자형 변수는 영문자, 숫자, 특수 문자 등을 값으로 가질 수 있음 • 예) ‘A’, ‘b’,‘7’,‘$’... 등 • 문자형 변수 선언의 일반 형식 char 변수명1[, ... , 변수명n]; 혹 은 char 변수명1=‘1개의 문자’[, ... , 변수명n=‘1개의 문자’];

  26. P ‘P’ : “P” : P \0 기본자료형-문자형 #include <stdio.h> void main() { //문자형 변수 및 초기값 선언예 char i; char a, b, c; char a=‘X’, b=‘y’; : } • 문자형(char) • 문자형 변수 • 문자형 변수 선언의 예 • C 언어에서 모든 문자형 상수는 그에 대응하는 수치값(코드값)으로 처리 • 문자값들의 수치적 비교 뿐만 아니라 연산이 가능 • 예) ‘a’<‘b’, ‘a’+9, ‘p’-1 • 문자열 • 이중 인용 부호(“”)로 묶인 문자들의 집합 • 길이가 가변적이므로 기억장소에 기억시킬 때 문자열의 마지막 문자 뒤에 Null(빈) 문자(‘\0’)를 기입하여 문자열의 끝을 표시 그림 3-2 문자형 상수 ‘P’와 문자열 “P”의 비교

  27. 기본자료형-문자형 • 문자형(char) • 예제 5 • 여러 자료형의 변수를 정의하여, 초기값을 대입하고, 화면에 출력하기 위한 프로그램 • 실행결과 #include <stdio.h> main() { inti=32760; float f=289.4455678389; double d=4.6543e+10; char c= 'T'; printf(" %d\n %f\n %e\n %c\n", i, f, d, c); }

  28. 기본자료형-문자형 • 문자형(char) • 예제 6 • 한 개의 문자를 문자형변수에 저장하고 1값을 더하여 결과를출력하는 프로그램 • 실행결과 #include <stdio.h> main() { char a='a'; a = a+1; printf(" %c\n", a); } #include <stdio.h> void main() { // 문자 및 ASCII 값으로의표현 char a='a'; printf("초기화값인 문자= %c\n", a); printf("최기화된 문자의ASCII 코드값: %d\n", a); a = a+1; printf("1 증가한 문자 = %c\n", a); printf("1 증가한 문자의 ASCII 코드값: %d\n", a); }

  29. 1 100 100 i i n n t t 변수와 상수 • 변수(variable) • 프로그램의 수행 중에 사용될 데이터를 저장할 수 있는 기억장소의 이름 • 변수의 내용은 프로그램이 실행됨에 따라 계속 바뀔 수 있음 • 프로그램의 전반부에 선언 • 초기값을 가진 상태로 선언될 수 있으며, 단순히 기억 장소 할당을 목적으로 선언될 수 있음 • 기억 장소가 갖는 상수 자료의 형에 따라 변수 선언이 결정 • 변수는 사용 전에 반드시 선언되어야 한다. • 선언 형식 : data-type(자료형) var-name(변수명) ; intnum; • 변수의 선언에서 초기값을 부여할 수도 있다. • 형식: data-typevar-name=초기값; intnum = 100; #include <stdio.h> void main() { //정수형 변수에 초기 // 값 (1,100)대입(저장) int num; int num = 1; intnum = 100; : : } num num

  30. 변수와 상수 • 변수의 선언 위치 • 함수의 외부 전역(global) 변수 • 함수의 내부 지역(local) 변수 • 지역변수는 함수가 처음 실행될 때 생성되었다가 함수가 끝나면 소멸 • 다른 함수에 동일한 변수의 이름을 사용할 수 있음 • 여러 개의 변수들을 동시에 선언 가능하다. • 예) float x, y, z; float a = 3.14, b = 9.8, c=4.5; int area =3; // area는 전역변수임 ret-type function-name( ) 함수 이름 { 함수의 시작 float part = 4.0; // part는 지역변수임 statement sequence 함수 내의 문장들(선언문 or 실행문) } 함수의 끝

  31. 변수와 상수 • 변수명 정의 규칙 • 영문자(A~X, a~z), 숫자(0~9), 밑줄(_)로 구성 • 첫 문자는 항상 영문자 또는 밑줄(_)로 시작 • 영문자의 대문자와 소문자는 서로 다른 변수로 취급 • 변수명은 보통 최대 31문자까지 가능 • 예약어(Reserved word)는 변수명으로 사용할 수 없음 • ANSI 표준 C에서 정의된 32개의 예약어(본 강의에서 사용함) • 추가로 도입된 예약어* ( 강의에서는 사용하지 않음) * 세밀하게 제어하기 위해 포인터에 관련된 near, far 그리고 인라인 어셈블러(C코드 중간에 직접 어셈블러를 기록하는 방법)를 위한 asm과 의사 레지스터변수, 그리고 변수전달 방식에 C언어형식을 적용할 것인가 pascal형식을 따를 것인가를 결정하는 cdecl, pascal키워드로 구성되었다.

  32. 변수와 상수 • 상수(constants) • 프로그램의 수행 중에 변하지 않는 고정된 수 • 상수도 사용 전에 반드시 선언되어야 한다. • ANSI 표준에서 제안된 const문을 이용하는 방법 • 선언되는 상수의 형을 지정 • 예) const type(자료형) var-name ; const float PI = 3.141592 • 선행처리 지시문을 이용하는 방법 • 상수를 재지정하면 컴파일 오류 유발 • 예) #define var-name value #define PI 3.141592 …프로그램내에서 PI를 재지정해서는 안됨  float PI ; (금지)

  33. 형 변환 규칙 • 하나의 식에 서로 다른 자료형들이 혼합되어 사용될 때, 형 확장(type promotion)규칙에 의하여 자동으로 형 변환이 일어나 모두 같은 형이 된다. (이 변환은 일시적이다) • 형 확장 규칙은 피연산자들 중 가장 큰 피연산자의 형으로 변환한다. • char < short < int < long < float < double • C 언어에서는 연산식에서의 계산 과정과 할당(배정)문에서 변수에 값을 저장할 때 다른 형변환 규칙이 사용된다. 우선순위 낮음 우선순위 높음

  34. int one, two, result; float three; one = ‘d’; /* ① ‘d’의 ASCII 값은 100 */ two = 2.3; /*②변수값저장 : 2.3 → 2 */ three = 3; /* ③ 변수값 저장 : 3 → 3.0 */ result = one + two + three /* ④ 연산식 계산과 변수값 저장 */ 100 2 3.0 102 105.0 105 보기 3-6 자동 형변환 형변환 규칙 • 자동 형변환 • 여러 개의 자료형을 가진 피연산자(변수)들이 섞여 수행될 때에는 그 중 가장 높은 자료형으로 변환 • 대입문의 경우, 대입문의 오른쪽에 있는 값의 자료형은 왼쪽에 있는 변수의 자료형으로형변환이 되어 대입

  35. int one, two, result; float three; one = ‘d’; /* ① ‘d’의 ASCII 값은 100 */ two = 2.3; /*② 변수값 저장 : 2.3 → 2 */ three = 3; /* ③ 변수값 저장 : 3 → 3.0 */ result = one + two + three /* ④ 연산식 계산과 변수값 저장 */ 100 2 3.0 102 105.0 105 자동 형변환(( one+ two)+three ) 형변환 규칙 • 자동 형변환 • 여러 개의 자료형을 가진 피연산자(변수)들이 섞여 수행될 때에는 그 중 가장 높은 자료형으로 변환 • 대입문의 경우, 대입문의 오른쪽에 있는 값의 자료형은 왼쪽에 있는 변수의 자료형으로형변환이 되어 대입 #include <stdio.h> void main() //자동형변환규칙: 정수형<실수형 { intone,two,result; // 정수형변수 선언 int mid; // 정수형변수 선언 float three; // 실수형변수 선언 one='d'; //d = 100(d의ASCII코드값임) printf("d의 값을 저장한 one = %d\n", one); two=2.3; three = 3; // result = one + two + three; mid = one + two; printf("one + two = %d \n", mid); result = mid + three; printf("one+ two + three = %f\n", (mid+three) ); printf("result = %d\n", result); }

  36. 형변환 규칙 • 자동 형변환 규칙 (char < short < int < long < float < double ) • char나short, int가 사용되면, 식을 계산할 동안 자동으로int로 확장 • 하나의 피연산자(변수)가 long double이면 다른 연산자도 long double • 피연산자가 double이면 다른 연산자도 double • 피연산자가float이면 다른 연산자도 float • 피연산자가 unsigned long이면 다른 연산자도 unsigned long • 피연산자가 long이면 다른 연산자도 long • 피연산자가 unsigned이면 다른 연산자도 unsigned • 특별한 경우 • 하나의 피연산자가 long이고 다른 피연산자가 unsigned int 일 경우 • unsigned int의 값을 long으로 나타낼 수 없을 때 • 피연산자가 모두 unsigned long으로 된다.

  37. 형변환 규칙 • 강제 형변환 • 연산식에서cast라고 하는 특수한 형태를 사용하여 수형 변환을 강제로 일으킴 • 강제 형변환은 함수 호출과 포인터 연산에 많이 이용 • 캐스트 연산자(cast operator) • 어떤 수식을 다른 자료형으로 바꾸고 싶을 때 사용하는 연산자 • 캐스트 연산자의 일반 형식 연산자 : (형 명칭) 형 식 : (형 명칭) 수식 형명칭: short, int, long, float, double등

  38. 형변환 규칙 • 강제 형변환 • 보기 3-7 캐스트 연산자의 예 • 실행 결과 #include <stdio.h> main() { int p, result; p = 2.94+3.15; // 2.94 + 3.15 = 6.09, p =6 result = (int)2.94 + (int)3.15; // 2+3=5, result=5 printf("p=%d \n", p); printf("result=%d \n“, result); }

  39. 형변환 규칙 • 강제 형변환 • 보기 3-8 캐스트 연산자의 예 • 실행 결과 #include <stdio.h> main() { int mice; mice = 1.6 * 1.7;/* 1.6*1.7=2.72, 자동형변환되어mice에는 2가 대입 */ printf("mice = %d \n", mice); mice = (int)1.6 * (int)1.7;/* 강제형변환되어 1이 대입 */ printf("mice = %d \n", mice); }

  40. 확장열 • 확장열 문자 • 보기 3-10 개행문자(\n 또는 \n : 다음줄로 이동 )사용 예 • 실행 결과 #include <stdio.h> main() { printf("\a"); /* 벨 소리 */ printf("KIM\n\"MIN\"\n\'LEE\'\n"); } ☜ 벨 소리 발생

  41. 1. printf() 함수 활용 프로그램 • 확장열(Escape sequence)문자

  42. 문자열 • 문자열 상수(string constant) • 여러 문자가 따옴표(“”)로 묶여진 형태 • 따옴표는 문자열의 일부가 아니라 단지 문자열 상수임을 표시 • 보기 3-11 문자열 사용 예 • 빈 문자열(Null string) • 문자가 하나도 포함되지 않은 문자열 • 문자열의 길이가 0임 • 이중인용부호 안에 Null 문자(‘\0’ 또는 \n)만 포함됨 • 1바이트 크기를 차지 • 따옴표 문자를 나타내기 위해서는 \" 로 써야 함(\“I am a string.\””) “Good Bye\n” /* Good Bye */ “She is 28 years old.” /* She is 28 years old. */ “How are you? \\ I said \\” /* How are you? \ I said \*/ “5 %% 4 는 1이다” /* 5 % 4는 1이다 */ “He said, \“I am a string.\”” /* He said, “I am a string.” */ “” /* 빈 문자열 */

  43. 1 1 0 0 0 0 1 1 byte bit ‘d’ ‘a’ ‘t’ ‘a’ ‘\0’ 1 3 y+1 y+3 메모리의 끝 N 주소 0 2 y y+2 y+4 N-1 1 3 5 7 2 4 6 8 문자열 • 문자열 • 다른 형처럼 별도의 형이 있는 것이 아니라 문자형의 배열로 표현 • strcpy()등과 같은 함수를 사용하여 문자형 변수의 배열에 저장 • 문자열의 끝에는 문자들의 끝을 나타내는 Null 문자(‘\0’ 또는 \0)가 추가됨 • 예) “data” 인 경우에 5 바이트의 기억장소로 요구됨

  44. 문자열 • 문자열 • 예제 8 • 사용하고있는 시스템에서 각 데이터형별변수의 사용 크기[ sizeof() ]를 알아보는 프로그램 • 실행 결과 #include <stdio.h> main( ) { char a[50]; // 문자 49개와 NULL문자(\0)1개가 들어가는 문자열 선언 printf("Type int size : %d bytes.\n", sizeof(int)); printf("Type char size : %d bytes.\n", sizeof(char)); • printf("Type char a[50] size : %d bytes.\n", sizeof(a)); printf("Type long size : %d bytes.\n", sizeof(long)); printf("Type double size : %d bytes.\n", sizeof(double)); }

  45. 자료형의크기- sizeof( 자료형또는 변수명) • sizeof() • 내장 함수로 인자로 넘겨지는 자료형(또는 변수)의 크기를 바이트로 나타낸다 형 식 : int sizeof(type_name | 수식) 하는일 : 인수의 값의 자료형의 크기를 byte단위로 출력 인 자 : 알고자하는 자료형(int, float, char .... 등) : : 1000 num 1001 1001 int num ; sizeof(int); //또는sizeof(num); 1002 1002 1003 1003 : : 1004 1004 1005 4 1006 : :

  46. 자료형의크기- sizeof( 자료형또는 변수명) • sizeof() • 내장 함수로 인자로 넘겨지는 자료형(또는 변수)의 크기를 바이트로 나타낸다 형 식 : int sizeof(type_name | 수식) 하는일 : 인수의 값의 자료형의 크기를 byte단위로 출력 인 자 : 알고자하는 자료형(int, float, char .... 등) : : 1000 num 1001 1001 int num ; sizeof(int); //또는sizeof(num); 1002 1002 1003 1003 : : 1004 1004 1005 4 1006 : :

  47. 표준입력함수-scanf( ) • scanf( ) • 화면입력 -표준 입력함수 : scanf() * 화면출력-표준출력함수는 printf( ) • 값을 키보드에서 입력받기 위한 표준 함수 • scanf(“%d”, &정수형변수명); scanf(“%f”, &실수형변수명); • 하나의 10진 정수를 변수에 입력 • 변수의 주소를 지정, 입력 받을 데이터의 형식 지정자 : : short num ; scanf("%d", &num); 1000 1002 num 1004 1004 1006 2002 2002 1008 : : 1010 1012 1014 : :

  48. 표준입력함수-scanf( ) • scanf() • 표준 입력함수 : scanf() • 값을 키보드에서 입력받기 위한 표준 함수 • scanf(“%d”, &정수형변수명); scanf(“%f”, &실수형변수명); • 하나의 10진 정수를 변수에 입력 • 변수의 주소를 지정, 입력 받을 데이터의 형식 지정자 : : short num ; scanf("%d", &num); 1000 1002 num 1004 1004 1006 2002 2002 1008 : : 1010 1012 1014 : :

  49. 표준입력함수-scanf( ) • 표준 입력함수 : scanf() • 시스템의 표준 입력 매체(보통 키보드)로 부터 지정한 형식 문자열에 맞게 자료를 입력받아 변수에 저장해주는 기능을 한다. • 주의 : scanf함수는 공백을 만나면 그전까지의 자료만 변수에 저장 형 식 : scanf(“형식 문자열”, 인수); 하는일: 표준입력장치(키보드)로부터 입력값을 변수에 저장 형식문자열 : 변환(서식)문자로 구성 인 자 : 입력값을 저장할 변수명(문자열 변수를 제외한 변수명 앞에 &를 붙인다. (예 : &변수명, scanf(“%d”, &sum); ) 예) scanf("%d", &num); 표 3-4 변환문자의 종류

  50. 표준입력함수-scanf( ) • scanf() • 예제 9 • 키보드로부터 문자와 문자열을 name[50]에 입력 받아 출력하는 프로그램 • 실행 결과 #include <stdio.h> main() { char number; char name[50]; char praise[35] = "My sakes, that's a grand name!"; printf("Enter the number?\n"); scanf("%c", &number); printf("What's your name?\n"); scanf("%s", name); /* 이름입력, name이 문자열변수이므로 앞에&를 붙이지 않음*/ printf("Hello, %s. %s\n", name, praise); }

More Related