제 18 강 데이터 타입 타입, 변환, 캐스팅 shcho.pe.kr.

Slides:



Advertisements
Similar presentations
3. 자료형. 담당교수 : 이 성 우 C++ 프로그래밍 상수와 변수 (3) 1. 변수 (variable)  프로그램 수행 도중에 자료  변수를 위해 은 변하지 않음  선언 시에 반드시 그. ※ 저장 정보의 구성 ① 정보의 종류 ② 저장 값 ③ 저장 위치 int Num.
Advertisements

03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
기본 자료형 순천향대학교 정보기술공학부 이 상 정. 자료형의 선언 컴퓨터프로그래밍 1 순천향대학교 정보기술공학부 이 상 정 3 자료형 선언 기본 자료형문자형 char 정수형 int 실수형 float double 형없음 void.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
Vision System Lab, Sang-Hun Han
제 3 장 변수와 자료형.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Basic of Buffer Over Flow
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
C++ Espresso 제1장 기초 사항.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
4장: 자료형과 수식.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
Chapter 4 – 연 산 자 Outline 4.1 산술 연산자 4.2 관계 연산자 4.3 동등 연산자 4.4 논리 연산자
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
변수와 자료형.
제 2 장 변수와 상수.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
adopted from KNK C Programming : A Modern Approach
Chapter 2 Lexical Elements, Operators, and the C System
Chapter 4 수식과 연산자.
제2장 데이터형과 표준 입출력문 문봉근.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Formatted Input/Output
제 3 장 연산자 (Operators).
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
Chapter 04 자료 유형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
Chapter 11. 배열과 포인터.
Chapter 04. 데이터의 표현과 연산(Ⅱ).
Chapter 05. 입출력 함수.
제 3장 데이터형과 연산자 Hello!! C 언어 강성호 김학배 최우영.
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제6장 자료형이란 무엇인가.
자바 5.0 프로그래밍.
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
3주차: Control Flow and Others
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
어서와 C언어는 처음이지 제16장.
제03장 정보의 표현.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
printf("Global Korea\n");
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
Presentation transcript:

제 18 강 데이터 타입 타입, 변환, 캐스팅 shcho.pe.kr

타입이란? 메모리 공간을 정의 쓰임새 크기 정수형 char, int, short 부동소수점형 float, double 등등

쓰임새의 차이:int and float main(){ int i; i = 1; i = i + 1; } main(){ float i; i = 1; i = i + 1; }

Actual assembly code pushl %ebp movl %esp, %ebp subl $4, %esp movl $0x3f800000, -4(%ebp) flds -4(%ebp) fld1 faddp %st, %st(1) fstps -4(%ebp) leave ret pushl %ebp movl %esp, %ebp subl $4, %esp movl $1, -4(%ebp) leal -4(%ebp), %eax incl (%eax) leave ret

다음 shcho.pe.kr

기본 데이터 타입 정수 계열: signed or unsigned 실수 계열: char short int int long int float double long double

정수 계열 정수를 2진수 형태로 저장 문자의 저장에도 이용 char: 1byte, 문자에 주로 이용 short: 2byte, 크기가 작은 정수에 이용 long: 32 bit machine에서는 int와 같음 long long: 64bit int: 대개 4byte (16bit machine에서는 int=short)

주의 !!! char 는 character 타입이 아니라 짧은 정수형이다!!!!! char는 character에 많이 사용해서 그렇게 이름 붙인 것일 뿐 char, int, short, long 등은 길이만 다를 뿐, 모두 정수형임..

다음 shcho.pe.kr

Q18_01

수의 한계 1바이트(8bit)인 char의 경우: 2바이트인 short의 경우는? unsigned char는? 00000000 ~ 01111111 (0~127) 11111111 ~ 10000000 (-1~-128) 127 = 28-1, -128 = -28 2바이트인 short의 경우는? unsigned char는?

“sizeof” 연산자 Not a function but an operator returns the size of a type or a variable in bytes e.g., sizeof(int)  4 sizeof(char)  1 int x; sizeof(x)  4

다음 shcho.pe.kr

실습 lab18_01/size.c sizeof() 함수를 이용하여 long long, long, int, short, char, long double, double, float의 길이를 출력하라. 예시: “int는 4바이트, char는 ....” File 명: size.c

정수간의 복제 int i; char c; c = 1; i = c; int i; char c; i = 15; c = i;

다음 shcho.pe.kr

실습 lab18_02/shortchar.c short s와 char c를 선언하고 s에 257을 assign한 후에 s를 c에 복사 다시 c를 s에 복사 s 와 c 값을 출력한다. File 명: shortchar.c

Bits view 0000000100000001 short 00000001 char 0000000000000001

다음 shcho.pe.kr

실습 lab18_03/types.c 변수 i는 int로, c는 char로 선언한다. i = c = 129; i와 c 값을 출력 File: types.c

Quiz18_02 결과 물어보기

도전 여러 개의 정수를 적어두어야 하는데 키보드에서 '-' 키가 고장 났다. 금액을 적는 칸에는 숫자밖에는 넣을 수가 없다. 어떻게 적으면 나중에 기억을 할 수 있을까? (실제 게임을 해보자 – 팀별로?)

부호 없이 음수 표현하기 3자리 10진수를 생각하자. +/- 부호 없이 음수를 만들려면? 방법 하나. 001 부터 499 까지는 정상적인 양수로 하고 500부터 999까지는 음수라고 하자. 양수인지 음수인지는 첫째자리만 보면 안다(0~4 양수 5~9 음수) 1000 – 999 = 1 이므로 999는 –1로 정하자 1000 – 998 = 2 이므로 998은 –2로 약속하자 ... 1000 – 500 = 500 이므로 이것은 –500으로 하자.

만일에 길동이가 실수로 999를 실제 구백구십구라고 생각하고 써놓았다면 약속을 알고 있는 다른 사람들은 이 수를 얼마로 해석할까?

Decimal game Use Web game

2진수의 음수 나타내기 4자리 2진수 -100 나타내기 10000 – 0100 = 1111 + 1 – 100 = 1111 - 100 + 1 = 1011 + 1 = 1100 -1 나타내기

Binary 음수 만들기 game Web

Sign Extension 0111 1111 = 127 1000 0000 1의 보수 1000 0001 2의 보수 10000001 == -127 == -127 1111111110000001

unsigned 경우 unsigned char == 129 10000001 unsigned short == 129 0000000010000001

다음 shcho.pe.kr

실습 lab18_04 18_03 에서의 types.c를 수정하여 unsigned int와 unsigned char로 선언한다. i = c = 129; i와 c 값을 출력 c = i = 129; i와 c 값을 출력 File: utypes.c, 18_04.txt report_18_04.txt 에는 lab18_03의 결과와의 차이를 기술하고 차이에 대한 이유를 설명해보라.

실수와 정수간 자동 변환 정수  실수: 실수  정수 : Assignment 이외의 연산 int i; float f=1.5; i = f;  truncation  1 실수  정수 : f=1; same as f = 1.0 Assignment 이외의 연산 5+2.5 9/5.0

다음 shcho.pe.kr

lab18_05/f_or_i.c #include <limits.h> // INT_MAX가 정의된 파일 i, j는 정수, f는 실수. 초기화 필요 while (i<INT_MAX){ i 값을 f에 넣었다가 f를 다시 j에 복사 만일 i와 j가 다르면 출력하고 프로그램 정지 i++; } 값이 달라지는 이유는 무엇이라고 생각되는가? 18_05.txt에 간략한 해답을 작성 goto 없이 끝내는 방법: return 0;

정수 상수의 타입 int i; ... i = 128; (129/5)+'a' + 1 long long int x = 5000000000LL; 이 상수 자체는 int로 저장됨

lab18_06/ll.c/18_06.txt int x, y, z; x = y = 100; z = 50000000*y/x; printf("%d\n", z); z = 50000000LL*y/x; 위와 같은 코드를 실행하여 결과를 살펴보고 두 경우가 다르게 된 이유를 18_06.txt에 기술하여 제출하라.

실수 상수의 타입 double (8 byte)로 저장 0.8532 10.4 .3145 10.1e-15 -10.2e3

실수의 내부 표현 sign bit mantissa (유효 숫자): 2진수 exponent: 지수 *주의: 실제 비트열은 이와 다소 다름. 설명을 위하여 단순화하였음.

다음 shcho.pe.kr

실습 lab18_07: 실수의 한계 파일: f_limit.c float x = 1; while ( x 가 0보다 크다면 ) { } x 값을 출력할 때는 %f와 %e 두 가지로 출력해본다.

실습 lab18_08: 실수의 한계 2 float 변수 두개를 선언한다. (x,y) x와 y에 1.0 값을 준다. while을 이용하여 반복한다. 반복 조건은 "y 값과 y + x의 값이 다를 것"이다. 반복할 내용: x 값을 출력한다. x 값을 반으로 줄인다. while 문이 끝났다면 조건이 만족하지 않은 것이므로 x의 값을 출력한다. (%e format으로 출력) File 명: float.c 왜 x 값이 0이 아닌데도 불구하고 x + y가 y 값과 같은가?  18_08.txt

해설

Casting: 명시적 타입 변환 f = (9/5) * c + 32 ??  f = ((float)9 / (float)5) * c + 32 or f = (9.0/5.0) * c + 32 int sum, count; float average; … average = sum / count; // incorrect average = sum / (float)count; average = (float)sum/(float)count;

다음 shcho.pe.kr

실습 lab18_09/avg.c scanf를 이용하여 정수를 data에 읽어 들여서 정수 변수인 sum에 계속 더해나간다. 읽은 데이터의 총 개수는 num에 저장한다. (더이상 데이터 입력이 없을 때까지) 평균은 총합을 데이터 개수로 나눈 것이다. 이것을 average라는 double 변수에 저장하라. 주의 할 것은 소수점 이하도 계산되도록 하는 것이다. avg.c

제 18 강 끝. shcho.pe.kr