Upload
deanna-mcbride
View
45
Download
4
Embed Size (px)
DESCRIPTION
2장 데이터형. 변수와 상수 출력 함수 데이터 형 형 변환. 학습목표. 변수와 상수의 개념을 이해할 수 있다 . 데이터 형의 의미와 필요성을 이해할 수 있다 . C 가 제공하는 데이터 형의 종류와 그 특성을 알 수 있다 . printf() 사용법을 익히고 활용할 수 있다. 변수( Variable). 변수는 프로그램을 작성하는 과정에서 처리 해야 될 많은 데이터와 정보, 처리후의 결과 등을 저장 할 수 있는 공간 을 의미 - PowerPoint PPT Presentation
Citation preview
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 1
c1_02_data
2 장 데이터형
① 변수와 상수
② 출력 함수
③ 데이터 형
④ 형 변환
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 2
c1_02_data
학습목표
변수와 상수의 개념을 이해할 수 있다 .
데이터 형의 의미와 필요성을 이해할 수 있다 .
C 가 제공하는 데이터 형의 종류와 그 특성을 알 수 있다 .
printf() 사용법을 익히고 활용할 수 있다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 3
c1_02_data
변수 (Variable)
변수는 프로그램을 작성하는 과정에서 처리 해야 될 많은 데이터와 정보 , 처리후의 결과 등을 저장할 수 있는 공간을 의미
변수가 선언되면 컴퓨터 내부적으로 볼 때 일정 크기의 기억장소를 할당 받는다 .
할당 받는 메모리의 크기는 변수의 데이터형에 따라 다르다 .
C 언어에서 변수를 선언할 때에는 저장될 데이터의 범위 및 상수의 종류에 따라 적절하게 데이터형을 결정해야 한다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 4
c1_02_data
변수의 선언
데이터형을 갖는 변수의 선언형식
① 데이터형 변수명 A, 변수명 B, ...;
예 ) int i, j, k;
② 데이터형 변수명 A;
예 ) int i;
③ 데이터형 변수명 B=0;
예 ) int j=0;
1. 데이터형이 동일한 2 개 이상의 변수를 선언할 때에는 콤마 (,) 로 구분하여 동시에 선언이 가능하며 ,
2. 개별적 선언도 가능하다 .
3. 변수의 선언과 초기화는 같은 문장에서 이루어 질 수 있다 .
변수는 외부 변수를 제외하고 함수 안에서 명령문을 사용하기 전에 선언 한다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 5
c1_02_data
변수 선언의 예
char c, ch; /* 변수 c, ch 를 문자형으로 선언 */
unsigned char munja; /* 변수 munja 를 부호 없는 문자형으로 선언 */
int i, j; /* 변수 i, j 를 부호 있는 정수형으로 선언 */
unsigned int k, l; /* 변수 k, l 를 부호 없는 정수형으로 선언 */
float a, f; /* 변수 a, f 를 4 byte 실수형으로 선언 */
double x, y, z; /* 변수 x, y, z 를 8 byte 실수형으로 선언 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 6
c1_02_data
변수의 초기화
/* 선언과 동시에 초기화 하는 경우 */int count = 10;
/* 선언만 하고 초기화 하지 않은 경우 */float average;
/* 문자열 포인터 변수의 선언과 동시에 초기화 */char *user_name = “Hello, World!” ;
/* count 는 선언과 동시에 값을 할당하고 item_no 는 선언만 */
int count=10, item_no;
/* 선언 후 별도로 값을 할당하는 경우 */average = 78.37;
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 7
c1_02_data
예 ) 변수의 선언 , 연산 , 대입
#include <stdio.h>
main()
{
int num1, num2;
int sum;
float div;
num1 = 2;
num2 = 3;
sum = num1+num2;
div = sum / 2.0;
}
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 8
c1_02_data
변수명의 규칙
변수이름에 사용될 수 있는 문자는 알파벳문자 , 숫자 , 언더 스코어문자 (_)이다 .
변수 이름은 반드시 영문자나 _ 로 시작해야 된다 .
대 / 소문자는 서로 다른 이름으로 취급되므로 구별해야 한다 .
C 언어에서 사용되는 키워드 (Keyword) 는 변수 이름으로 사용할 수 없다 . 변수 이름을 정할 때는 위의 규칙에 따라 정하되 , 변수가 사용되는 목적을 알 수
있는 단어로 선택하는 것이 바람직하다 .
변수선언의 예 잘못된 변수선언 : int 2number; float f&data; char case; 올바른 변수선언 : int number; float f_data; char _ch;
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 9
c1_02_data
키워드 , 예약어
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 10
c1_02_data
상수 (constant)
상 수 란 연 산 에 이 용 되 는 데 이 터 로 서 그 값 이 한 번 정 의 되 면 프로그램이 실행되는 도중에 그 값이 변화되지 않고 일정한 값을 유지하는 데이터를 의미
상수의 종류
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 11
c1_02_data
정수형 상수
소수점을 포함하지 않는 수로서 부호 있는 수와 부호 없는 수로 구분
C 언어에서 정수형 상수는 진법에 따른 수로 표현 가능하다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 12
c1_02_data
정수형 상수의 표현 예
int a = 2002; /* 양의 정수형 상수 */
int b = -377; /* 음의 정수형 상수 */
int count2 = 012; /* 8 진 상수 */
int c; c = 0xFF; /* 16 진 상수 */
long int d; d = 1234L; /* long 형 상수 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 13
c1_02_data
실수형 상수
실수형 상수는 소수점이나 지수부를 가지고 있는 데이터 기억장소에 저장 될 때에는 부호 , 지수부 , 가수부로 구분하여
저장된다 .
실수형 상수의 표현 예
float f1; f1 = 3.14; /* 소수점 형태 */
float f2; f2 = -0.005;
double e1; e1 = 0.14E-3; /* 지수 형태 */
double e2; e2 = 1.5E+2;
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 14
c1_02_data
문자 상수
문자 상수는 한 개의 문자를 상수로 취급 , 단일 인용부호 (' ') 를 붙여 표현 한 개의 문자는 1 바이트로 처리
문자 상수의 표현 예
char ch1; ch1 = 'A'; /* 'A' 는 내부적으로 ASCII 코드 값으로 변환 */
char c1; c1 = '3'; /* '3' 는 내부적으로 ASCII 코드 값으로 변환 */
char ch2; ch2 = 0x41; /* ASCII 코드 0x41 = 'A' */
char c2; c2 = 51; /* ASCII 코드 51 = '3' */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 15
c1_02_data
문자 상수와 ASCII 코드
컴퓨터는 문자를 숫자로 대신하여 인식하며 상호 연관을 위해 ASCII 코드를 사용
문자상수의 표현 예
문 자 'A' 의 ASCII 코 드 에 대 응 하 는 0x41(16 진 수 ) 의 수 치 로 변환되어 기억되며 ,
3 에 해당되는 ASCII 코드 값 0x33(16 진수 ) 또는 51(10 진수 ) 이 기억 .
따라서 , ASCII 코드 값을 직접 대입하여도 같은 결과를 얻을 수 있다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 16
c1_02_data
문자열 상수
문자열 상수는 단일 문자가 하나 이상 연결되어 있는 문자열을 의미 인용부호 (" ") 를 붙여 표현 , 문자열 끝에는 널 문자 (‘\0’) 가 자동으로 추가되며 널 문자는 문자열이 끝나는 지점을 나타내는 역할을 한다 .
문자와 문자열 상수의 메모리크기 문자 상수 'A' 인 경우 : 기억장소 1 byte 가 필요 문자열 상수 "A" 는 널 (null) 문자를 포함해 2 byte 가 필요
문자열 상수의 표현 예 char ch[5]; ch = "abcd"; /* 문자열 상수 , 널 문자 포함 */ char ch[2]; ch = "A"; /* 문자열 상수 , 널 문자 포함 */ char ch; ch = 'A'; /* 문자 상수 , 널 문자 없음 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 17
c1_02_data
매크로 상수
#define MAX 100 /* 매크로 상수의 정의 */ #define COUNT 10 /* 매크로 상수의 정의 */
for (i=0; i < COUNT; i++) { … }
COUNT = COUNT + 1; /* 오류 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 18
c1_02_data
printf() : 출력 함수
화면에 형식화된 문자열을 출력하는 표준 라이브러리 함수이다 .
함수의 형식 printf(" 출력 형식 지정 문자열 ", 인수 1, 인수 2, ...);
출력 형식 지정 문자열 : 어떻게 항목들을 출력할 것인가 하는 방식을 나타내 주는 문자열이 지정된다 . 문자열을 나타내는 " " 의 형식을 갖추어야 한다 . 변환문자 , 수정자 , 플래그 , 출력문자 ( 열 ), 제어문자 들을 포함하게 된다 .
인수 1, 인수 2, ... : 출력될 항목 가리키는 것으로 상수 , 값이 출력되기 전에 계산되어야 할 계산식 등 인수들은 출력 형식 지정 문자열에 각 인수들과 대칭 되는 변환 문자가 있어야 함 인수들과 변환 문자는 생략 가능하다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 19
c1_02_data
제어 및 변환문자 없이 출력하기
printf() 는 기본적으로 인용부호 (" ") 안의 모든 문자열을 화면에 출력
printf() 문의 사용 예 : 단순출력
printf("Welcome"); /* welcome 을 화면에 출력 */ printf("computer language"); /* computer language 을 화면에 출력
*/
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 20
c1_02_data
예제 프로그램
/* 단순 출력 (1) */
#include <stdio.h>main(){ printf(" 홍 길 동 ");}
실행결과홍 길 동
/* 단순 출력 (2) */
#include <stdio.h>
main()
{
printf("Welcome to C programming");
printf("C is a computer language");
}
실행결과 Welcome to C programmingC is a computer
language
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 21
c1_02_data
제어문자 (Escape Sequence) 포함하여 출력하기
제어문자는 문자로 표현할 수 없는 ASCII 코드 문자들을 표현한 것 표현 방식은 역 슬래쉬 (\) 와 함께 사용하여 구성
제어문자는 문자형 변수에 단독으로 또는 문자열 속에 사용할 수 있다 .
제어문자들은 데이터를 출력할 때 출력 형식을 지정하는데 많이 사용된다 .
출력 형식 지정 문자열에 포함된 제어문자는 화면에 나타나지 않으며
제어문자에 해당되는 기능만을 수행한다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 22
c1_02_data
제어문자의 종류 및 기능
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 23
c1_02_data
printf() 문의 사용 예 : 제어문자 이용
① printf("Welcome\n"); /* 문자열 출력 후 , 줄 바꿈 */
② printf("\tcomputer language\n");/* 다음 텝으로 이동하여 문자열 출력 후 , 줄 바꿈 */
③ printf(“\%%computer \tlanguage\n"); /* %computer 출력 후 다음 탭으로 이동 , language 출력 후 , 줄
바꿈 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 24
c1_02_data
예제 프로그램
/* 제어문자 이용하여 출력하기 (1) */
#include <stdio.h>
main()
{
printf("Welcome to C programming\n");
printf("C is a computer language\
n");}
실행결과
Welcome to C programming
C is a computer language
/* 제어문자 이용하여 출력하기 (2) */
#include <stdio.h>
main()
{
printf("\tWelcome to \nC programming");
printf("\nC is a computer language");
}
실행결과
Welcome to
C programming
C is a computer language
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 25
c1_02_data
변환문자 이용하여 출력하기
출력 형식 지정 문자열에서 사용되는 변환문자는 printf() 문 내의 지정된 인수의 값을 받아들이는 데이터형을 나타낸다 .
인수들의 값은 변환문자 데이터 형태로 변환되어 출력 형식 문자열에 저장된 후 인용부호 (" ") 안의 모든 내용이 출력된다 .
변환 문자들에 해당하는 인수 ( 변수 ) 는 반드시 같은 순서대로 지정해 주어야 함
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 26
c1_02_data
변환 문자의 종류 및 기능
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 27
c1_02_data
printf() 문의 사용 예 : 변환문자 이용
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 28
c1_02_data
변환문자 이용하여 출력 (1)
#include <stdio.h>
main()
{
printf("%c%d%f", 'A', 41, 3.14);
printf("%c %d %f", 'A', 41, 3.14);
printf("char=%c, int=%d, float=%f", 'A', 41, 3.14);
printf("%f %e %g", 1.2345, 1.2345, 1.2345);
}
실행결과 A413.140000
A 41 3.140000
char=A, int=41, float=3.140000
1.234500 1.23450e+00 1.2345
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 29
c1_02_data
제어문자 이용하여 출력 (2)
#include <stdio.h>main(){ char ch; int integer; float f;
ch = 'K'; integer = 255; f = 12.345;
printf("ch=%c, int=%d, f=%f", ch, integer, f); printf("int = %d, octal = %o, hexa = %x", integer, integer,
integer); printf("%d - %d = %d", integer, 55, integer-55); }
실행결과ch=K, int=255, f=12.345000
int = 255, octal = 377, hexa = ff
255 - 55 = 200
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 30
c1_02_data
수정자 (Modifier) 이용하여 출력
수정자는 기본 변환문자와 같이 사용하여 기본 서식의 출력형식을 다양하게 변형시킬 수 있다 .
주의할 점은 수정자는 기본 변환 문자와 결합되어 출력형식을 변형시키는 것으로 새로운 서식을 의미하지 않는다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 31
c1_02_data
수정자의 종류 및 기능
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 32
c1_02_data
수정자 (Modifier) 가 사용된 예
① printf("%10d", 123); /* 필드폭이 10 인 정수형을 오른쪽 정렬 */
② printf("%+10d", 123); /* 필드폭이 10 인 정수형을 + 부호와 함께 출력 */
③ printf("%-10d", 123); /* 필드폭이 10 인 정수형을 왼쪽 정렬 */
④ printf("%010d", 123); /* 빈 공간을 0 으로 채움 , 오른쪽 정렬 */
⑤ printf("%ld", 1234567); /* long 형 값으로 변환 */
⑥ printf("%5.2f", 123.456); /* 전체 필드폭이 5 이고 정밀도가 소수점 이하 2 자리인 소수점형 */
⑦ printf("%10.4f", 123.456); /* 전체 필드폭이 10 이고 정밀도가 소수점 이하 4 자리인 소수점형 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 33
c1_02_data
수정자 이용하여 출력 (1)
#include <stdio.h>
main()
{
int a = 1234;
float b = 12.3456789;
printf("%d", a);
printf("%3d", a); /* 원 데이터보다 작은 자리수이면 원래 길이대로 출력 */
printf("%6d", a);
printf("%06d", a);
printf("%u", a);
printf("%f", b);
printf("%7.3f", b);
printf("%12.6f", b);
}
실행결과
12341234 1234001234123412.345679 12.346 12.345679
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 34
c1_02_data
수정자 이용하여 출력 (2)
#include <stdio.h>
main()
{
printf("==========================");
printf("%c%c%c%c", 'A', 'B', 'C', 'D');
printf("%c %c %c %c", 'A', 'B', 'C', 'D');
printf("%6c %6c %6c %6c", 'A', 'B', 'C', 'D');
printf("%-6c %-6c %-6c %-6c", 'A', 'B', 'C', 'D');
printf("==========================");
}
실행결과
==========================ABCDA B C D A B C DA B C D====================
======
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 35
c1_02_data
데이터 형
프로그램에서 데이터를 표현하는 방법 : 상수와 변수의 두 가지 형태
상수 : 변하지 않는 일정한 값 , 변수 : 데이터를 기억해두는 장소로서 기억된 값이 변할 수도 있다 .
변수는 메모리의 특정한 번지에 위치한 일련의 바이트로 구성 구성되는 형태는 선언되는 데이터형에 따라 다르다 .
데이터형 종류와 크기에 따라 해당 변수의 데이터 표현 범위가 결정 변수의 용도에 따라 적절하게 데이터형을 선언
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 36
c1_02_data
C 언어에서 제공하는 데이터형
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 37
c1_02_data
bit 와 byte
1 byte = 8 bit, 1 bit 는 0 또는 1 로 표현 , off 또는 on 의 개념
0 과 1 로만 표현된 수를 이진수 라고 함
1 byte =
예 ) 0100 0100(2) = 64 + 4+ 1 = 69
b7 b6 b5 b4 b3 b2 b1 b0
27 =128
26 =64
25 =32
24 =16
23 =8
22 =4
21 =2
20 =1
0 1 0 0 0 1 0 0
0 26 =64
0 0 0 22 =4
0 20 =1
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 38
c1_02_data
음수 표현 방법
0
+9
0 0 0 1 0 0 1 1
-9
0 0 0 1 0 0 1
부호비트만 바꾼다
0
| -9 | = +9
0 0 0 1 0 0 1 1
-9
1 1 1 0 1 1 0
각 비트를 1 의보수로 바꾼다
0 0 0 0 0 0 0 1
1 -91 1 1 0 1 1 1
1 1 1 1 0 1 1 0
+
부호절대치방법
1 의 보수방법
2 의 보수방법
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 39
c1_02_data
문자 데이터형 (char)
문자 데이터형의 선언 및 사용 예 char ch = 'B'; /* 'B' -> 66(10 진수 ) */ char cnum1 = 66, cnum2 = 213; /* cnum2 -> overflow 발생
*/
음수 부분이 불필요할 때 unsigned 라는 키워드를 사용하여 문제를 해결 예 ) unsigned char x=213; /* 0 ~ 255 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 40
c1_02_data
signed( 부호 있는 ) 수unsigned( 부호 없는 ) 수 (1)
char 과 unsigned char 의 데이터 표현 범위
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 41
c1_02_data
signed( 부호 있는 ) 수unsigned( 부호 없는 ) 수 (2)
일반적으로 최상위 비트 (MSB) 는 부호 비트 (Sign Bit) 양수인 경우 0, 음수인 경우에는 1 로 표현
1 byte 의 크기를 할당 받은 변수인 경우 ( 부호 있는 수 ) -128 ∼ 127 의 데이터 표현 범위
음수 부분이 불필요할 때 unsigned 라는 키워드를 사용하여 문제를 해결 예 ) unsigned char x; /* 0 ~ 255 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 42
c1_02_data
예 ) 문자 데이터형의 데이터 표현
#include <stdio.h>
main()
{
char ch1, ch2;
unsigned char ch3;
ch1 = 'A';
ch2 = 213;
ch3 = 213;
printf("ch1 = %d, ch2 = %d, ch3 = %d", ch1, ch2, ch3);
}
실행결과 ch1 = 65, ch2 = -43, ch3 =
213
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 43
c1_02_data
정수 데이터형 (int)
소수점이 없는 수를 저장할 수 있는 데이터형 정수 데이터형의 종류에 따라 각각 다른 크기의 메모리가 할당 따라서 , 할당된 메모리 크기에 따라 데이터 범위가 결정 .
시스템에 따라 다를 수 있음 (int 는 기종에 따라 표준 길이가 할당된다 ).
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 44
c1_02_data
정수 데이터 형 (int) 의 데이터 범위
현재 우리 시스템에서의 정수 데이터 형의 범위
부호 유 /무
데이터형 할당 바이트
데이터 범위
부호 있는 정수
short 2 -32,768 ~ 32,767
int 4 -2,147,483,648 ~ 2,147,483,647
long 4 -2,147,483,648 ~ 2,147,483,647
부호 없는 정수
Unsigned short
2 0 ~ 65,535
Unsigned int 4 0 ~ 4,294,967,295
Unsigned long
4 0 ~ 4,294,967,295
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 45
c1_02_data
정수 데이터형 선언 및 사용 예
int num1 = -30, num2 = 3456; short value1 = 125, value2 = -12; unsigned int a = 63000, b = 4294967296; /* 4294967295
*/ /* b -> overflow 발생 ( 정수 4byte 시스템에서 ) */
long int x = 679001, y = 456;
시스템에 따라 short 와 int 또는 int 와 long 의 크기가 같을 수 있지만 일반적으로 적은 수일 경우 short 형이 , 보통일 경우는 int형이 , 큰 수일 경우는 long 이 사용된다 .
short int 와 long int 에서 int 를 생략하여 사용할 수 있다
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 46
c1_02_data
예 ) 정수 데이터형의 데이터 범위
#include <stdio.h>
main()
{
int value1;
long value2;
unsigned long value3;
value1 = value2 = value3 = 2147483648; /* 2,147,483,647 */ ;
printf("value1 = %d", value1);
printf("value2 = %ld", value2);
printf("value3 = %ld", value3);
}
실행결과
value1 = 9464
value2 = 2147483648
value3 = 2147483648
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 47
c1_02_data
실수 데이터형 (float, double)
실수 데이터형의 선언 예 float f = 3.14, k = -1.3456;
double a = 1.23456789, b = 0.14E-3; /* 0.14E-3 = 0,14*10-3 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 48
c1_02_data
실수 데이터형의 구조
부호 비트 , 지수부 ( 정수부 ) 과 가수부 ( 소수부 ) 로 각 비트들이 구분 소수점은 별도로 표현하지 않으며 지수부와 가수부의 사이에 있는 것으로 간주 지수부는 64+지수 ( 바이어스 법 ) 로 양의 지수와 음의 지수를 표현한다 .
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 49
c1_02_data
예 ) 실수 데이터형의 데이터 범위
#include <stdio.h>main(){ int a; float b, c; double d, e;
a = 3.14; b = 12.12345; c = 12.123456789; d = 12.123456789; e = 0.1212345e2;
printf("a = %d", a); printf("b = %f", b);
printf("c = %f", c);
printf("d = %e", d);
printf("e = %f", e);
printf("e = %g", e);
}
실행결과a = 3
b = 12.123450
c = 12.123457
d = 1.21235e+01
e = 12.123450
e = 12.1235
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 50
c1_02_data
형 변환
자동 형 변환 : 데이터형이 다른 것들을 혼합해서 연산을 할 경우에 규칙에 따라 자동으로
변하는 형 변환
강제 형 변환 캐스트 (cast) 연산자를 이용하여 강제적으로 데이터형을 변환
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 51
c1_02_data
자동 형 변환
연산과정에서의 자동 형 변환
데이터형이 다른 것들을 혼합해서 연산을 할 경우에 자동으로 형 변환 우선 순위가 낮은 데이터형이 우선 순위가 높은 데이터형으로 자동으로 형 변환이
되어 연산이 이루어지게 된다 .
데이터형의 우선 순위
char < short < int < long < unsigned < float < double
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 52
c1_02_data
예 ) 자동 형 변환
자동 형 변환 예제 : 연산과정
10 / 3.0; /* 3.3333 */ 10 / 3; /* 3 : 형 변환 없음 */ 10 + 3.14; /* 13.14 */
실행결과 x + y = 2065
/* 예제 : 자동 형 변환 (1) */
#include <stdio.h>
main()
{
char x;
int y, z;
x = 'A';
y = 2000;
z = x + y;
printf("x + y = %d", z);
}
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 53
c1_02_data
예 ) 자동 형 변환 (2)
#include <stdio.h>
main()
{
float x, y, z;
x = 10/3; /* 정수와 정수의 연산 */
y = 10/3.0; /* 정수와 부동소수점의 연산 */
z = 10.0/3.0; /* 부동소수점과 부동소수점의 연산 */
printf("x = %f", x);
printf("y = %f", y);
printf("z = %f", z);
}
실행결과
x = 3.000000
y = 3.333333
z = 3.333333
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 54
c1_02_data
대입연산 (=) 에서의 자동 형 변환
대입연산을 할 때 자동 형 변환은 우측의 값이 좌측의 데이터형으로 변환 우측의 데이터형이 좌측보다 크다면 부득이하게 정보의 손실이 발생
double 형태이었던 변수가 float 형태의 변수로 형 변환이 이루어질 경우 float 에서 가능한 유효숫자의 뒷부분에 있는 double 형의 소수점 자리들은 손실
자동 형 변환이 이루어질 때 가장 주의해야 할 점은 대입연산을 사용하였을 때
자동 형 변환 예 : 대입연산 사용 시
int x; float f;
x = 3.14; f = 'A' + 340;
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 55
c1_02_data
예 ) 자동 형 변환 (3)
#include <stdio.h>
main()
{
int x;
float y = 3.14;
double z = 1.23456789;
x = y;
printf("x = %d", x);
y = z;
printf("y = %f", y);
}
실행결과x = 3
y = 1.234568
/* 유효자릿수에서 반올림 */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 56
c1_02_data
예 ) 자동 형 변환 (4)
#include <stdio.h>
main()
{
int sum, x;
x = 10;
sum = x +10/3.0;
printf("x + 10/3.0 = %f", x+10/3.0);
printf("sum = %d", sum);
}
실행결과x + 10/3.0 = 13.333333
sum = 13
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 57
c1_02_data
cast 연산자를 이용한 형 변환
강제적으로 형을 변환시킬 때 사용되는 연산자가 cast 연산자
cast 연산자의 형식
( 데이터형 ) 수식 , 또는 ( 데이터형 ) 변수 ;
예제
① float y; y = (int) 10.5 + (int) 3.14; /* y = 13.64 or 13 ? */
① int x =10; float a; a = (float) x / 3; /* 3.3333 or 3.0 ? */
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 58
c1_02_data
예 ) cast 형 변환
#include <stdio.h>
main()
{
int x;
float a, b;
x = 30;
a = 3.14;
b = (int) a + x;
printf("b = %f", b);
}
실행결과b = 33.000000
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 59
c1_02_data
확인학습 1
1. 상수와 변수의 차이에 대하여 설명하시오 .
2. 변수를 사용이전에 반드시 선언해야 하는 이유를 설명하시오 .
3. 문자 상수와 문자열 상수의 표기에 대하여 설명하시오 .
4. 다음은 상수를 표현한 것이다 . 각각의 차이에 대하여 설명하시오 .1) 3 2) ‘3’ 3) “3”
5. 변수명을 선언할 때의 규칙을 설명하시오 .
6. 예약어 또는 키워드란 무엇인가 ?
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 60
c1_02_data
확인학습 2
7. 데이터 형이 의미하는 것은 무엇이며 , 그 종류에는 어떤 것이 있는가 ?
8. 각 데이터 형을 갖는 변수를 선언하였다 , 오류를 찾으시오 .1) char ch; 2) int a, b; 3) float for; 4) unsigned int ch;
9. 문자형 데이터의 할당 바이트와 데이터의 표현범위는 얼마인가 ?
10. int 와 unsigned int 의 차이와 데이터의 표현범위는 각각 얼마 ?
11. 형 변환에 대하여 설명하시오 .
12. 데이터 형 변환이 필요한 이유는 무엇인가 ?
13. 캐스트 연산자를 사용할 때 주의할 점은 ?
교재 : "C 프로그래밍 실습", 양은샘/김대극공저, 내하출판사 61
c1_02_data
실습
실습실에서 만납시다 .