Chỉång II : Kiãøu dỉỵ liãûu, biãún v hàòng
Trang 8
Ch−¬ng II. KIÃØU DỈỴ LIÃÛU, BIÃÚN V HÀỊNG
I.
Kiãøu dỉỵ liãûu:
Kiãøu dỉỵ liãûu l táûp håüp cạc giạ trë m cạc biãún thüc kiãøu âọ cọ thãø nháûn âỉåüc.
Mäùi kiãøu dỉỵ liãûu cọ mäüt säú phẹp toạn tỉång ỉïng.
Cạc kiãøu dỉỵ liãûu âỉåüc phán loải nhỉ sau :
II.
Biãún v hàòng, cạc phẹp gạn cå bn:
Biãún dng âãø lỉu dỉỵ liãûu cọ thãø thay âäøi giạ trë âỉåüc.
Hàòng dng âãø lỉu dỉỵ liãûu khäng thãø thay âäøi.
Biãún v hàòng l vng nhåï lỉu trỉỵ dỉỵ liãûu âỉåüc âàût tãn cho dãù truy cáûp (khäng phi
dng âëa chè) .
Trỉåïc khi sỉí dủng biãún v hàòng ta cáưn khai bạo trỉåïc.
II.1.
Khai bạo v khåíi tảo biãún:
Khai bạo biãún : kiãøu_dỉỵ_liãûu danh_sạch_cạc_tãn_biãún
Ta cọ thãø khai bạo nhiãưu biãún cng kiãøu cng mäüt lục, cạc biãún cạch nhau dáúu pháøy.
Vê dủ : int dem, tam, x, y;
float tr_binh;
Khåíi tảo biãún : biãún = biãøu thỉïc
Vê dủ : int x ;
x = 10;
hồûc : int x =10 ;
Ta cáưn chụ x = y khäng phi l x bàòng y m l gạn giạ trë ca y vo x.
Vê dủ : int x,y;
y=x;
kiãøu säú ngun
kiãøu säú thỉûc
kiãøu kê tỉû
kiãøu logic
kiãøu cå såí
kiãøu vä hỉåïng
tỉû âënh nghéa
kiãøu liãût kã
kiãøu vä hỉåïng
âån gin
kiãøu dỉỵ liãûu cọ
cáúu trục
kiãøu file
kiãøu array
kiãøu struct
kiãøu con tr
Kiãøu
dỉỵ
liãûu
Chỉång II : Kiãøu dỉỵ liãûu, biãún v hàòng
Trang 9
Ta nãn nhåï ràòng bäü nhåï mạy tênh khäng räùng khi mạy tênh lm viãûc. Cạc khäúi nhåï cáúp
phạt cho biãún cọ thãø â cọ giạ trë trỉåïc âọ. Ta chỉa khåíi tảo x nãn ta khäng biãút âỉåüc giạ trë x.
II.2.
Khai bạo v khåíi tảo hàòng:
Khai bạo hàòng :
const kiãøu_dỉỵ_liãûu tãn_hàòng = giạ trë hàòng
Vê dủ : const int so_luong = 50 ;
const float sai_so = 0.5 ;
II.3.
Phẹp gạn:
Biãún nháûn giạ trë qua phẹp gạn våïi dáúu bàòng : tãn_biãún = biãøu thỉïc
Vê dủ : a = 5; // gạn cho a giạ trë l 5
b = a - 4; // tênh giạ trë a - 4 räưi gạn giạ trë âọ cho b
Phẹp gạn kẹp :
Vê dủ : a = b = c = 7 ;
a = (b = 4 ) + ( c = 5 ) ;
Khi ta sỉí dủng phẹp gạn kẹp, cáu lãûnh s ngàõn hån tuy nhiãn khäng nãn lảm dủng.
III.
Kiãøu säú ngun:
Cạc kiãøu säú ngun l nhỉỵng táûp håüp con ca táûp Z, khäng phi l ton bäü táûp Z .
•
Cạc kiãøu säú ngun ca C våïi cạc di giạ trë khạc nhau :
Kiãøu biãún Tỉì khoạ Säú byte
Di giạ trë
Character char 1 -128 ÷ 127
Integer int 2
-32768
÷ 32767
Short integer short 2 -32768 ÷ 32767
Long integer long 4
-2147483648
÷
2147483647
Unsigned character unsigned char 1 0 ÷ 255
Unsigned integer unsigned int 2
0
÷
65535
Unsigned short integer unsigned short 2
0
÷
65535
Unsigned long integer unsigned long 4
0
÷
4294967295
Våïi táút c cạc kiãøu, ta chè nãn gạn cho biãún cạc giạ trë nàòm trong di giạ trë ca kiãøu
âọ, nãúu khäng ta s nháûn âỉåüc kãút qu khäng mong mún màûc d C khäng thäng bạo läùi.
Kiãøu int l kiãøu thäng dủng nháút. Kiãøu char thỉûc ra l kiãøu kê tỉû nhỉng C cho phẹp sỉí
dủng kiãøu char nhỉ l kiãøu ngun: trong biãøu thỉïc säú hc thç char âỉåüc hiãøu l kiãøu ngun.
•
Cạc phẹp tênh säú hc âäúi våïi säú ngun :
Phẹp toạn Kê hiãûu Vê dủ
Cäüng + x+y
Trỉì - x-y
Nhán * x*y
Chia láúy pháưn ngun / x/y
Chia láúy pháưn dỉ % x%y
Tàng ++ x++ hồûc ++x
Gim -- x--hồûc --x
Chỉång II : Kiãøu dỉỵ liãûu, biãún v hàòng
Trang 10
Vê dủ : 10 % 3 =1 ; 5 / 3 = 1 ;
•
Biãøu diãùn säú ngun dỉåïi dảng Hexa ( hãû tháûp lủc phán) :
Hãû tháûp phán sỉí dủng : 0 1 2 3 4 5 6 7 8 9
Hãû nhë phán sỉí dủng : 0 1
Hãû tháûp lủc phán sỉí dủng : 0 1 2 3 4 5 6 7 8 9 A B C D E F
Vê dủ : säú 53 åí dảng nhë phán l 110101, åí dảng Hexa l 35.
Säú ngun âỉåüc biãøu diãùn dỉåïi dảng Hexa : 0xgiạ_trë_Hexa hồûc 0Xgiạ_trë_Hexa
Vê dủ : 0x12 (=18) ; 0X12 (=18)
Âäúi våïi säú hãû 8 ta viãút thãm säú 0 vo trỉåïc : 0giạ_trë_Oct
Vê dủ : 0123 (=83)
• Biãøu diãùn säú ám trong mạy tênh:
Säú ám : Vê dủ : int x= - 21 ;
21 : 0000 0000 0001 0101
Säú b 1 : 1111 1111 1110 1010
Säú b 2 : 1111 1111 1110 1011
• Hiãûn tỉåüng trn säú :
Hiãûn tỉåüng ny xy ra khi kãút qu dỉû kiãún ca phẹp tênh säú hc vỉåüt ra khi di giạ trë
cọ thãø biãùu diãùn âỉåüc ca kiãøu dỉỵ liãûu âọ. Lục âọ kãút qu thỉûc tãú s l kãút qu sai.
Vê dủ : 32767 + 1 s cọ kãút qu -32768
Âãø khàõc phủc ta chuøn sang sỉí dủng cạc kiãøu dỉỵ liãûu cọ di giạ trë cho phẹp räüng hån
Chụng ta nãn khai bạo våïi kiãøu dỉỵ liãûu täúi ỉu âãø vỉìa cọ kãút qu mong mún vỉìa tiãút
kiãûm bäü nhåï.
Nãúu chụng ta âàût mäüt säú ám vo biãún khäng dáúu hồûc âàût mäüt säú vo kiãøu dỉỵ liãûu cọ
di giạ trë nh hån säú âọ thç trçnh biãn dëch s khäng bạo läùi nhỉng ta s cọ kãút qu khäng
mong mún.
• Hàòng säú ngun cọ kiãøu âënh trỉåïc :
Âäi khi chụng ta mún ghi cạc hàòng säú våïi kiãøu âënh trỉåïc mäüt cạch tỉåìng minh âãø
âm bo âäü chênh xạc : ghi thãm 1 kê tỉû vo cúi säú âọ
Vê dủ : U : unsigned int
UL : unsigned long int
0x123L: hàòng säú ngun dỉåïi dảng Hexa kiãøu long.
Vê dủ : signed char ch= 0xFF;
int x= 0xFFFF;
unsigned int y= 0xFFFFu;
printf("\n The decimal of signed 0xFF is %d", ch); -1
printf("\n The decimal of signed 0xFFFF is %d", x); -1
printf("\n The decimal of unsigned 0xFFFFu is %u", y); 65535
printf("\n The hex of decimal 12 is %#X ", 12); 0XC
printf("\n The hex of decimal -12 is %#X ", -12); 0XFFF4
Chỉång II : Kiãøu dỉỵ liãûu, biãún v hàòng
Trang 11
IV.
Kiãøu säú thỉûc:
• Cạc kiãøu säú thỉûc ca C :
Kiãøu biãún Tỉì khoạ Säú byte
Di giạ trë
Säú thỉûc cọ âäü chênh xạc âån float 4
1.2E-38 ÷ 3.4E38
Säú thỉûc cọ âäü chênh xạc kẹp double 8 2.2E-308 ÷ 1.8E308
Säú thỉûc cọ âäü chênh xạc kẹp âäü di låïn long double 10
3.4E-4932 ÷ 3.4E4932
Biãøu diãùn säú thỉûc åí dảng tháûp phán :
Vê dủ : 3.14 ; 2.718281828
Biãøu diãùn säú thỉûc åí dảng khoa hc :
Vê dủ : 6.023e23=6.023E23 (= 6.023 * 10
23
)
Trong vê dủ trãn, pháưn âënh trë l 6.023, pháưn m l 23
Pháưn âënh trë v pháưn m cọ thãø cọ dáúu âi km, chụng âỉåüc viãút liãưn nhau khäng cọ
dáúu ngàn cạch. Vê dủ : -12.23e-23
Pháưn ngun hay pháưn tháûp phán cọ thãø khäng cọ nhỉng dáúu cháúm khäng thãø thiãúu.
Vê dủ : 3. .14
Ta âãø : 3 l säú ngun nhỉng 3. l säú thỉûc.
• Biãøu diãùn säú tháûp phán trong mạy tênh:
Säú tháûp phán : Vê dủ : 12.5 : 1100.1
0.25 : 0.01
Quy trçnh chuøn âäøi .
• Hàòng säú thỉûc cọ kiãøu âënh trỉåïc :
Tỉång tỉû nhỉ säú ngun :
F : kiãøu float
L : kiãøu long
• Cạc phẹp toạn våïi kiãøu säú thỉûc :
Phẹp cäüng ( + ) , trỉì ( - ) , nhán ( * ) , chia ( / ) , phẹp tàng gim.
Phẹp chia (/) âäúi våïi säú thỉûc s cho kãút qu l säú thỉûc. Säú thỉûc khäng cọ phẹp %.
Khai bạo v khåíi tảo säú thỉûc : tỉång tỉû nhỉ säú ngun :
float x;
x=0.3333;
Hồûc float x=0.3333;
Do cạch lỉu trỉỵ säú thỉûc trong mạy tênh, ta khäng nãn kiãøm tra sỉû bàòng nhau giỉỵa 2 säú
thỉûc m ta kiãøm tra fabs( a - b ) < esp hay khäng.
V.
Kiãøu Boolean:
Thỉûc ra ngän ngỉỵ C khäng âënh nghéa r rng kiãøu Boolean. Kiãøu ny täưn tải dỉåïi
dảng säú ngun.
Säú ngun cọ giạ trë 0 âỉåüc hiãøu l FALSE, cn lải âỉåüc hiãøu l TRUE. Nãúu kãút qu l
FALSE thç cọ giạ trë l 0, nãúu kãút qu l TRUE thç cọ giạ trë l 1.
Cạc phẹp toạn logic v cạc phẹp toạn quan hãû cho kãút qu kiãøu Boolean
Chổồng II : Kióứu dổợ lióỷu, bióỳn vaỡ hũng
Trang 12
Caùc toaùn tổớ vồùi kióứu Boolean :
Toaùn tổớ Pheùp toaùn logic Yẽ nghộa
&& AND Pheùp vaỡ
|| OR Pheùp hoỷc
! NOT Pheùp phuớ õởnh
Caùc pheùp toaùn quan hóỷ :
Kờ hióỷu Yẽ nghộa
!= so saùnh khaùc nhau
== so saùnh bũng nhau
>= so saùnh lồùn hồn hoỷc bũng
<= so saùnh nhoớ hồn hoỷc bũng
> so saùnh lồùn hồn
< so saùnh nhoớ hồn
VI.
Kióứu kờ tổỷ (character):
Mọựi giaù trở kióứu char chióỳm 1 byte vaỡ õổồỹc bióứu dióựn thọng qua baớng maợ ASCII.
Caùc kióứu kờ tổỷ trong C :
Kióứu bióỳn Tổỡ khoaù Sọỳ byte Daới giaù trở
Kióứu coù dỏỳu char ( signed char) 1
-128
ữ
127
Kióứu khọng dỏỳu unsigned char 1
0 ữ 255
Phỏn loaỷi :
Caùc kờ tổỷ vn baớn coù maợ tổỡ 32 õóỳn 126, coù thóứ õổa ra maỡn hỗnh vaỡ maùy in. Caùc
kờ tổỷ naỡy gọửm caùc kờ tổỷ ! # $ % & , caùc con sọỳ, caùc chổợ caùi thổồỡng vaỡ hoa, ...
Caùc kờ tổỷ õióửu khióứn coù maợ tổỡ 0 õóỳn 31, noùi chung caùc kờ tổỷ naỡy khọng thóứ õổa
ra maỡn hỗnh. Mọỹt sọỳ kờ tổỷ õióửu khióứn :
Ta cỏửn phỏn bióỷt hai kờ tổỷ 0 vaỡ \0 : Kờ tổỷ 0 laỡ sọỳ 0 coù maợ 48, coỡn kờ tổỷ \0 laỡ kờ tổỷ
NULL coù maợ 0.
Kờ tổỷ Daợy maợ Giaù trở hexa Giaù trở thỏỷp phỏn
õọứ chuọng BEL \a x07 7
xoaù traùi BS \b x08 8
nhaớy caùch ngang \t x09 9
nhaớy caùch õổùng \v x0B 11
xuọỳng doỡng mồùi \n x0A 10
sang trang \f x0C 12
vóử õỏửu doỡng \r x0D 13
dỏỳu \ x22 34
dỏỳu \ x27 39
dỏỳu ? \? x3F 63
dỏỳu \ \\ x5C 92
dỏỳu NULL \0 x00 0