You are on page 1of 20

CHUYN T CHC D LIU

CC KIU D LIU C BN
Ging vin: V QUC HONG (vqhoang@fit.hcmus.edu.vn)

Ni dung trnh by
2

Kiu d liu Phn loi kiu d liu Cc kiu d liu c bn trong C/C++ Hng trc kin trong C/C++ Kiu d liu ca biu thc p kiu

Kiu d liu Kiu d liu (data type) l g?


3

L s phn loi d liu Mt kiu d liu xc nh:


Cc d liu c th c ca kiu Tp cc thao tc c th dng thao tc trn d liu ca kiu nh dng v cch lu tr d liu ca kiu

Mt kiu d liu thng c nh danh bng mt tn, gi l tn kiu d liu

Kiu d liu V d v kiu d liu


4

Kiu d liu int trong C/C++ (32 bt):


Tn kiu: int Cc gi tr: {2147483648, , 2147483647} Cc thao tc: {+, -, *, /, %, ~, &, |, } nh dng: dng b-2, c s 2 Lu tr: 4 byte lin tip, byte thp trc nu l little-endian, byte cao trc nu l big-endian

Phn loi kiu d liu


5

Theo mc tru tng


Kiu d liu my
dy bt (bit, byte, word, double word) s nguyn dng b-2 (8/16/32/64 bt), s thc chm ng n/kp theo nh dng IEEE

Kiu d liu c th: ci t c th trong cc ngn ng lp trnh Kiu d liu tru tng: kiu chung, c th c ci t c th thnh cc kiu d liu c th
Dng tru tng nht gi l cu trc d liu tru tng (abstract data structure)

Phn loi kiu d liu (c th)


6

Theo mc phc tp:


Kiu c bn (basic type): kiu nn tng khng xy dng t cc kiu khc (m gip xy dng cc kiu khc) Kiu phc hp (composite type): kiu xy dng t cc kiu khc

Theo mc h tr:
Kiu c sn (built-in type): kiu do ngn ng lp trnh h tr sn Kiu do ngi dng nh ngha (user-defined type): kiu do lp trnh vin xy dng

a s kiu c bn l kiu c sn Thut ng kiu nguyn thy (primitive type) l ch kiu va c bn va c sn

Cc kiu d liu c bn trong C/C++


7

Cc kiu d liu c bn trong C/C++ rt gn gi vi cc kiu my Cc thao tc trn cc kiu ny c chuyn gn nh trc tip thnh cc ch th my D liu ca cc kiu ny thng c gi l gi tr (value) L nn tng xy dng nn cc kiu khc

Cc kiu d liu c bn trong C/C++ Cc kiu s nguyn


8

Cc kiu s nguyn trong C/C++ phn ra c du, khng du v theo kch thc (s bt lu tr)
Kch thc 1 byte 2 byte 4 byte 8 byte Kiu (signed) char unsigned char (signed) short unsigned short (signed) int / (singned) long unsigned int / unsigned long (signed) long long unsigned long long Phm vi gi tr -27 .. 27 1 0 .. 28 1 -215 .. 215 1 0 .. 216 1 -231 .. 231 1 0 .. 232 1 -263 .. 263 1 0 .. 264 1

Cc kiu d liu c bn trong C/C++ Cc kiu s thc


9

Cc kiu s thc trong C/C++ l kiu du chm ng (floating-point) theo nh dng ca IEEE
Kch thc T kha 4 byte 8 byte 10 byte float double long double Gi tr nh nht 10 38 10-308 10-4932 Gi tr ln nht 1038 10308 104932

Cc kiu d liu c bn trong C/C++ Kiu k t v kiu chui


10

C/C++ khng c kiu k t ring m dng kiu char (s nguyn 1 byte) K t tng ng vi s nguyn qua bng m ASCII, l bng tng ng t tp s [0, .., 255] n tp k t chun ASCII C/C++ cng khng c kiu chui ring m dng mng cc k t kt thc bng k t \0 biu din chui

Cc kiu d liu c bn trong C/C++ Kiu lun l


11

C khng c kiu lun l ring m dng cc gi tr s nh l gi tr lun l: 0 l false v khc 0 l true Cc biu thc quan h (==, !=, >, >=, <, <=) cho gi tr 1 ng vi true v gi tr 0 ng vi false C++ cung cp kiu lun l bool nhng c x l bn di nh l kiu s nguyn

Hng trc kin trong C/C++


12

Hng (trc kin) l phng tin ca ngn ng m t mt gi tr xc nh ca mt kiu d liu Hng nguyn: 123, -123,
Kiu int Thm hu t l cho kiu long v u cho kiu khng du S bt phn (c s 8): 0123, S thp lc phn: 0x123,

Hng thc: 12.3, 0.123e2


Kiu double Thm hu t f cho kiu float v l cho kiu long double

Hng trc kin trong C/C++


13

Hng k t: a, \n,
Kiu char: gi tr nguyn, l m ASCII ca k t tng ng (0 l 48) c t trc tip m ASCII: \x30 l 48 l 0, Cc k t c bit: \n, \t, \\, K t null: \0 (m ASCII l 0)

Hng chui: , hello, \n,


Mng k t kt thc bng k t null (\0) Thng lu tr trong vng nh tnh ca chng trnh (ch c)

Hng trc kin trong C/C++


14

Hng lit k: enum boolean { false, true }; enum day { Mon = 2, Tue, };
Mi hng i din cho mt gi tr nguyn:
false = 0, true = 1 Mon = 2, Tue = 3,

Hng lun l ca C++: true, false


true l 1 false l 0

Kiu d liu ca biu thc


15

Kiu d liu ca ton hng (operand)


Hng: kiu c xc nh t qui tc ca hng
123 c kiu l int 123.0 c kiu l double

Bin: kiu c xc nh t khai bo


int a; double d;

Kiu d liu ca biu thc (expression)


Xc nh qua kiu ca cc ton hng v cc ton t
int a = 10; 10 + a c kiu l int, cn (10 + a) * 10.0 c kiu l double

p kiu/chuyn kiu (Type casting/Type conversion)


16

L vic chuyn mt gi tr (d liu) t kiu ny (kiu ngun) sang kiu khc (kiu ch) Phn loi
Theo mc :
n gin: cht ngn, ni rng Phc tp: i nh dng

Theo yu cu:
Ngm nh (implicit) Tng minh (explicit)

p kiu/chuyn kiu
17

Xy ra khi cn kiu ny li nhn c mt kiu khc:


Cc ton hng khc kiu int a = 10 + 15.6; //10 chuyn thnh double Php gn int a = 10.6; //10.6 chuyn thnh int i s v gi tr tr v ca hm int f(int v) { return v + 0.5; //v+0.5 l double, chuyn thnh int } double r = f(1.5); //1.5 l double, chuyn thnh int

Chuyn kiu ngm nh


18

Do trnh bin dch t ng lm Thng khng lm mt mt d liu:


Php dng kiu (type promotion): lun m bo khng lm mt d liu Cng c th mt mt d liu lin quan n du hoc s thc

Kh an ton cho chng trnh int a = 10 + 0.5; //10 chuyn thnh double c 10.0 //10.0 + 0.5 c 10.5 //10.5 chuyn thnh int c 10 //a = 10

Chuyn kiu tng minh


19

Do lp trnh vin yu cu tng minh bng php p kiu: (kiu) gi_tr Thng lm mt mt d liu Lp trnh vin t chu trch nhim double f = 3/2; //3/2 c 1, f=1.0 double f = 3/(double)2; //chuyn kiu tng minh 2 thnh double c 2.0 //chuyn kiu ngm nh 3 thnh 3.0 //3.0/2.0 c 1.5 //f=1.5

20

Hi v p

You might also like