TRNG I HC PHM VN NG
KHOA CÔNG NGH THÔNG TIN
TRN TN T
BÀI GING
(Dùng cho sinh viên các lp i hc Công ngh
thông tin, i hc S phm tin hc)
- Tài liu lu hành ni b -
LI NÓI U
C s lp trình là hc phn giúp cho sinh viên nm c kin thc c bn
cài t thành công mt thut toán thành chng trình bng ngôn ng lp trình C.
Qua ó, trang b cho sinh viên kin thc nn tip cn và hc tp tt các ngôn ng
lp trình khác trong các hc k tip theo.
Bài ging c biên son và ging dy cho sinh viên nm th nht, bc i
hc ngành Công ngh thông tin và ngành S phm tin hc k t nm 2008, theo
hình thc ào to niên ch. Hin nay chng trình ào to ti Trng i hc Phm
Vn ng c chuyn i sang ào to theo hc ch tín ch. Chính vì vy, bài
ging c chnh s a, b sung cho phù hp v!i hình thc ào to theo hc ch tín
ch.
C∀ng nhân ây tôi xin chân thành cám n hi ng chuyên môn khoa Công
ngh thông tin, Th.S Hunh Triu V# và Th.S Võ c Lân ã dành thi gian c và
óng góp nhiu ý kin quý báu bài ging c hoàn chnh hn, áp ng nhu cu
hc tp c∃a sinh viên Khoa Công ngh thông tin - Trng i hc Phm Vn ng.
Bài ging không sao tránh kh%i nhng thiu sót, mong các bn ng nghip
óng góp ý kin bài ging hoàn thin hn trong các ln chnh s a sau.
Xin chân thành cám n quý thy cô, các bn ng nghip !
Qung Ngãi, ngày 25/12/2013
TRN TN T
Bài ging C s lp trình
-1-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
CHNG 1: CÁC THÀNH PHN C BN
Mc tiêu
Kt thúc chng, sinh viên có th:
Nm c các thành phn c bn ca ngôn ng lp trình C: b ký hiu, t
khóa, tên và cách t tên, cách ghi li chú thích.
Nm c cu trúc chung ca mt chng trình C.
Hiu và vn dng c các phép toán, các hàm ã c xây dng cho các
kiu d liu c s: kiu s nguyên, kiu s thc, kiu ký t, kiu boolean.
1.1 B ký hiu và t khóa
1.1.1 B ký hiu
- 26 ch cái la tinh hoa: A, B, …, Z.
- 26 ch cái la tinh thng: a, b, …, z.
- 10 ch s thp phân: 0,1,…,9.
- Các ký hiu toán hc: +, -, *, /, = <, >, (, ).
- Các ký hiu c bit: . , ; “ ‘ _ @ # $ ! ^ [ ] { } …
- Du cách hay khong trng.
1.1.2 T khóa
Là các t dùng riêng ca ngôn ng lp trình C và mi t khóa có mt ý ngha và
tác dng c th.
* Chú ý:
- Không th nh ngha li t khóa.
- Các t khóa trong C c vit di dng ch thng.
Mt s t khóa thông dng hay dùng trong ngôn ng lp trình C
auto break case char continue default
do double else extern float for
goto if int long register return
short sizeof static struct switch typedef
union usnigned void volatile while asm ….
1.1.3 Tên và cách t tên
Trong chng trình, ngi lp trình có th dùng rt nhiu tên: tên chng
trình, tên bin, tên hng, tên hàm,… Mi tên u phi khai báo trc khi s dng.
Qui tc t tên:
- Tên bao gm dãy các ký t lin nhau nh các ch cái a,…,z, A,… Z, các ch
s 0, …, 9 và du gch ni di.
Bài ging C s lp trình
-2-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
- Tên không c bt u bng ch s.
- Tên không c ch a các ký t c bit nh du cách, du chm câu,… S
ký t ti a trong tên ca Turbo C là 32.
- Tên không c trùng vi t khóa.
- C là ngôn ng lp trình phân bit ch hoa và ch thng, vì vy tên
NGHIEM s! khác vi các tên: Nghiem, nghiem,….
- Không c t tên bng ting Vit (C xem cách làm ó là sai cú pháp) .
- Các ví d v t tên:
+ Mt s tên t úng: Gia_tri, _DX, pi, ….
+ Mt s tên t sai: 3X, PI$, Bien 1,
1.1.4 Chú thích
Khi vit chng trình bn nên thêm vào các li chú thích cho chng
trình sáng sa và d∀ hiu. Trình biên dch s! không biên dch các chú thích to ra
mã chng trình mà nó có tác dng thuyt minh thêm cho d∀ hiu.
Phn v#n bn nm gia cp ký hiu m∃ /* và óng */ chính là phn chú
thích. Phn chú thích có th nm trên nhiu dòng, mi∀n là nm trong cp du m∃ và
óng nêu trên.
Lu ý: Trong C++ li chú thích nm sau cp du // và vit trên mt dòng.
1.2 Cu trúc chung ca mt chng trình C
Cu trúc t%ng th ca mt chng trình C thng có các khi thông dng sau:
…………………………………………………………………………………
#include <…> /* gi các tp tin tin x lý */
#define <…> /* nh ngha các hng s */
typedefs <…> /* nh ngha kiu d liu */
…………………………………………………………………………………
Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */
…………………………………………………………………………………
Khai báo các bin ngoài
………………………………………………………………………………….
<Kiu d liu tr v> main() /* chng trình C bt buc phi có hàm main */
{ Khai báo các bin cc b, các hng ca hàm main
Các câu lnh thc hin ca hàm main
return <Kt qu tr v>
}
Bài ging C s lp trình
-3-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
…………………………………………………………………………………
Function prototype /* nh ngha ni dung tng minh ca hàm */
{
Khai báo các bin, hng ca hàm.
Các câu lnh thc hin ca hàm.
}
…………………………………………………………………………………
Nh vy, mt chng trình C thng bao gm các thành phn: các ch∋ tin
x lý, các nh ngha: kiu, hng, khai báo bin ngoài, các hàm t to, hàm main.
Trong ó:
+ #include <…> /* gi các tp tin tin x lý */
Ví d 1.1: #include <stdio.h>
+ #define <Tên hng s> <Giá tr hng> /* nh ngha các hng s */
Ví d 1.2: #define MAX 100
+ typedef <tên kiu c(> <tên kiu mi> /* nh ngha kiu d liu */
Ví d 1.3: typedef int Songuyen;
+ Function prototype /* khai báo nguyên m&u hàm gm tên và tham s */
Trong phn khai báo nguyên m&u hàm, bn ch∋ ra kiu giá tr tr v ca
hàm, tên hàm, tham s hình th c ca hàm.
Ví d 1.4: Khai báo nguyên m&u hàm tính din tích hình tròn
float Tinh_dien_tich(float radius);
+ Khai báo các bin ngoài (bin toàn cc): Là ni khai báo các bin có tm
tác dng trong c chng trình.
Ví d 1.5: int n;
+ Trong chng trình C có th có nhiu hàm, trong ó hàm main là hàm
chính, bt buc phi có và các câu lnh c thc hin tun t t trên xung di.
V nguyên tc hàm phi tr li mt giá tr cho tên hàm, nhng nu không mun s
dng giá tr tr v, bn có th vit nh sau: void main(). T khóa void ch∋ hàm
không có giá tr riêng ca nó (t c hàm không mang mt giá tr c th nào khi thc
hin xong hàm)
+ /* nh ngha ni dung tng minh ca hàm */
Ví d 1.6: )nh ngha ni dung hàm tính din tích hình tròn vi tham s là
radius (bán kính ca hình tròn).
float Tinh_dien_tich(float radius)
#define PI 3.14
Bài ging C s lp trình
-4-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
{ float dientich;
dientich = PI*radius*radius;
return(dientich);
}
Lu ý: )nh ngha ca hàm Tinh_dien_tich s! c vit phía di hàm
main.
* Mt s ví d:
Ví d 1.7: Chng trình in ra màn hình ch “Chao cac ban” và “Hen gap lai”
Gii
#include <stdio.h>
main()
{
printf(“Chao cac ban\n”);
printf(“Hen gap lai\n”);
getch();
}
Gii thích chng trình ví d 1.7
#include <stdio.h>: Khai báo tp tin tin x lý stdio.h (vit tt ca t
standard input/output) là tp tin tin x lý ch a các hàm vào/ra chu∗n. Trong
chng trình có s dng hàm printf (hàm ra chu∗n) c nh ngha trong tp tin
stdio.h.
Hàm printf là hàm cho in ra màn hình ni dung nm trong cp du “ ”
Ký t \n là ký t iu khin xung dòng mi.
Phn thân ca chng trình bao gm on chng trình:
main()
{
….
}
getch(); Khi chng trình vit ra màn hình 2 câu “Chao cac ban” và
“Hen gap lai” thì dng li cho ngi s dng xem. Nu không có lnh này thì
chng trình tr∃ v màn hình v#n bn chng trình, ngi s dng s! không xem
c kt qu, lúc ó phi bm t% hp phím Alt + F5 mi xem c kt qu.
Ví d 1.8: Chng trình tính din tích hình tròn.
Gii
Bài ging C s lp trình
-5-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
#include <stdio.h>
main()
{ float R,Dien_tich;
printf(“Nhap ban kinh R = “);
scanf(“%f”,&R);
Dien_tich = 3.14*R*R;
printf(“Dien tich hinh tron co ban kinh %f là %f”,R,Dien_tich);
getch();
}
Gii thích chng trình ví d 1.8
float R, Dien_tich; Khai báo bin R và Dien_tich có kiu s thc.
printf(“Nhap ban kinh R = “); in ra màn hình dòng: Nhap ban kinh R =
scanf(“%f”,&R); Hàm c giá tr t bàn phím vào cho bin R. %f là mã
nh dng qui nh c giá tr vào cho bin R có kiu s thc, &R c hiu là
c giá tr vào cho ô nh ca bin R.
Dòng lnh printf(“Dien tich hinh tron co ban kinh %f là
%f”,R,Dien_tich); In ra giá tr ca bin R và bin Dien_tich vi qui cách in là s
thc.
Ví d 1.9: Chng trình tính din tích hình tròn có s dng chng trình con.
Gii
#include <stdio.h>
main()
float Tinh_dien_tich(float radius);
main()
{ float R;
pritnf(“Nhap ban kinh R = “);
scanf(“%f”,&R);
printf(“Dien tich hinh tron = %f “,Tinh_dien_tich(R));
getch();
}
float Tinh_dien_tich(float radius)
#define PI 3.14
{ float dientich;
dientich = PI*radius*radius;
Bài ging C s lp trình
-6-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
return(dientich);
}
Gii thích chng trình ví d 1.9
#define PI 3.14. )ây là khi ghép nh ngha mt macro. Vi nh ngha
này, khi ngôn ng lp trình C dch chng trình, bt c ch nào trong chng trình
xut hin tên PI s! c thay th bng 3.14.
Vic tính din tích c thc hin bng hàm Tinh_dien_tich vi tham s
là radius. Nguyên m&u hàm Tinh_dien_tich c khai náo trc hàm main() và nh
ngha tng minh ni dung ca hàm ∃ sau hàm main.
1.3 Kiu d liu c s
1.3.1 Kiu d liu
D liu là dng biu di∀n vt lý ca thông tin. Nhng dng d liu c bn
c x lý trong máy tính in t gm: Các ký t, hình nh, âm thanh, tri th c, s
kin, lut d&n. Theo ngha rng, d liu thô là các s, ký t, hình nh hay các kt
qu khác ca các thit b chuyn %i các lng vt lý thành các ký hiu. Các d liu
loi này thng c x lý tip b∃i con ngi hoc a vào máy tính. Trong máy
tính, d liu c lu tr và x lý ti ó hoc chuyn cho mt ngi hay mt máy
tính khác. D liu thô là mt thut ng tng i, b∃i vì d liu ã c x lý ti
bc này có th là d liu thô ∃ bc tip theo. Trong máy tính in t, d liu
c biu di∀n bng chui các ký hiu ca mt bng ch cái nào ó, mà ph% bin
nht là bng ch cái nh phân (gm 2 ký hiu “0” và “1”). Mt chng trình máy
tính là mt tp hp d liu c hiu là các lnh.
Kiu d liu là mt tp hp các giá tr mà mt bin thuc kiu ó có th
nhn c và trên ó xác nh mt s phép toán. Các kiu d liu này thng c
quy nh b∃i ngôn ng lp trình, hay nói cách khác mi ngôn ng lp trình có mt
tp các kiu d liu khác nhau. Trong các ngôn ng lp trình, mi kiu d liu ch∋
biu di∀n c mt min giá tr xác nh nào ó, s gii hn này là do ph thuc
vào kích thc ca vùng nh biu di∀n s ó. Vì vy, các thông tin c trng ca
mt kiu d liu bao gm:
+ Tên kiu d liu.
+ Kích thc vùng nh biu di∀n nó (t c min giá tr).
+ Các phép toán s dng trên kiu d liu ó.
1.3.2 Kiu s nguyên
Là tp hp các s nguyên có th biu di∀n c trong máy tính và c nh
ngha vi mt s t khóa. Mi t khóa tng ng vi mt kiu s nguyên có di
biu di∀n giá tr trong phm vi nht nh. Nhng kiu s nguyên c bn trong ngôn
Bài ging C s lp trình
-7-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
ng lp trình C là kiu s nguyên có du, c nh ngha vi t khóa int chim 2
byte.
Bng các t khóa s nguyên và phm vi biu din
Kiu bin T khóa S byte Phm vi biu din
Character char 1 -128 +127
Integer int 2 -32768…+32767
Short Integer short 2 -32768…+32767
Unsigned character unsigned char 1 0…255
Unsigned Integer unsigned int 2 0 65535
Unsigned Short Integer unsigned short 2 0 65535
Long Integer long 4 -2147483648…
+2147483647
Unsigned Long Integer Unsigned long 0… 4294967295
Lu ý: Kiu char thc cht là kiu ký t, song C cho phép dùng các ký t
nh là s nguyên. Vì vy, khi tính toán trong biu thc s hc thì kiu char c s
dng nh là s nguyên (ch mã ASCII tng ng ca ký t ó) nhng khi tính toán
trong biu th c ký t thì nó c hiu là ký t. ây chính là s m!m d∀o ca ngôn
ng lp trình C.
Có nhiu phép tính c nh ngha cho s nguyên: phép tính s hc, phép
tính quan h, phép tính logic s hc.
Bng lit kê các phép tính s hc i vi kiu s nguyên
Phép toán Ký hiu Ví d
Cng
+
a + b
Tr
-
a - b
Nhân
*
a * b
Chia ly phn
nguyên
/
a / b
Chia ly s d
%
a % b
V nguyên tc phép chia 2 s nguyên cho kt qu là s nguyên. Mun nhn
c kt qu là s thc, bn phái vit (float) a / b.
Ví d 1.10: a = 15; b = 2; Vy kt qu a/b s! là 15/2 = 7. Bn mun nhn
kt qu ca phép chia là s thc phi vit: (float) a/b; Lúc ó 15/2 = 7.5
) kh∃i to mt bin có kiu nguyên ta vit:
int i; i = 10; Hoc vit int i = 10;
Bài ging C s lp trình
-8-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Hng s nguyên có nh kiu trc: ) ghi hng s nguyên vi kiu nh
trc bn ghi thêm mt ký t vào cui dãy s: L cho kiu long, U cho kiu
Unsigned Integer, UL cho kiu Unsigned Long.
Ví d 1.11: 20000U là hng s nguyên theo kiu Unsigned Integer;
* Cách biu din s nguyên di dng s Hecxa:
+ Ngoài cách vit theo dng s thp phân, C còn quy c cho phép vit s
nguyên di dng s Hecxa, ký t bt u 0x hoc 0X. Ch+ng hn s 65 trong h
thp phân c vit di dng s Hecxa là 0X41.
+ Nu vit s nguyên di dng s ∃ h c s 8 thì ký t bt u 0. Ch+ng
hn s 65 trong h thp phân c vit di dng s ∃ h c s 8 là: 0101.
Hai cách vit trên rt thun li cho nhng ngi lp trình h thng. Lúc ó,
mt byte có th biu di∀n hai ch s Hecxa vì mt s Hecxa c biu di∀n bng
mt cm s nh phân 4 bít. Ch+ng hn: s 255 trong h thp phân, biu di∀n trong
h Hecxa là 0xFF.
Ví d 1.12: Chng trình tính t%ng 2 s nguyên.
Gii
#include <stdio.h>
main()
{ int m=5,n=10;
long tong;
tong = m+n;
getch();
}
1.3.3 Kiu s thc
Là tp hp các s thc có th biu di∀n c trong máy tính và c nh
ngha b∃i mt s t khóa: float, double, long double.
Trong máy tính s thc c biu di∀n di 2 dng: dng bình thng và
dng có phn m( (dng s khoa hc).
+ Dng bình thng: 3.14, 5.0
+ Dng s khoa hc: 1.254567E+02 tng ng vi 1.254567*10
2
=
125.4567
Phm vi biu di∀n và chính xác ca s thc ln hn nhiu so vi s
nguyên nên s thc thích hp vi nhng i lng cn giá tr ln và chính xác
cao.
Bài ging C s lp trình
-9-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Bng các t khóa ca s thc và phm vi biu din
Kiu bin T khóa S
byte
Phm vi biu din
S thc vi chính xác n
Single-precision floating-point
float 4 3.4e-38 … 3.4e38
chính xác 7 ch s
S thc vi chính xác kép
Double-precision floating-point
double 8 1.7e-308 … 1.7e308
chính xác 15 ch s
S thc vi chính xác kép (
dài ln)
Long double-precision floating-
point
long
double
10 3.4e-4832 … 1.1e4932
chính xác 19 ch s
Cách vit hng s thc:
+ Không cn phn l, sau du chm: 7.
+ Không cn du chm ∃ phn nh tr nu có phn m(: 2E-8
+ Vit dng bình thng: 5.6
+ Không cn s 0 u tiên: .1512
+ Chp nhn dùng ch e: 0.07e-3
Các phép tính s hc i vi kiu thc: Cng, tr, nhân, chia. Khác v#i kiu
s nguyên, phép chia (/) cho kt qu là s thc và không tn ti phép toán % cho
kiu s thc.
Kh∃i to bin s thc ta vit: float x; x = 7.43; Hoc vit float x = 7.43;
Hng s thc nh trc kiu: Ta có th vit hng s thc vi kiu c nh
trc bng cách ghi thêm ký t vào cui dãy s (F cho kiu float, L cho kiu Long).
Ví d 1.13: 0.1234567E-33L là hng s thc kiu long.
Các hàm s hc dùng cho kiu s nguyên và s thc
Các hàm s hc dùng cho kiu s nguyên và kiu s thc c nh ngha
trong tp tin tin x lý math.h và c s dng vi các i s là s nguyên hoc s
thc. Nu ký hiu i là tham s nguyên, f là tham s thc. Ta có bng biu di∀n nh
sau:
Hàm Kiu giá tr tr v Tác dng
abs(i) Int Tr v giá tr tuyt i ca s nguyên i
fabs(d) Double Tr v giá tr tuyt i ca s thc d
sin(d) Double Tr v giá tr hàm sin
cos(d) Double Tr v giá tr hàm cos
Bài ging C s lp trình
-10-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
cosh(d) Double Tr v giá tr hàm cosh
tan(d) Double Tr v giá tr hàm tang
exp(d) Double Tr v giá tr e m( x
log(d) Double Tr v giá tr hàm loga c s t nhiên d
pow(d1,d2) Double Tr v giá tr d1 m( d2
floor(d) Double Hàm ct tròn s
ceil(d) Double Hàm làm tròn s
fmod(d1,d2) Double Hàm ly phn d ca phép chia d1/d2
sqrt(d) Double Hàm khai c#n bc 2
srand(d) void Kh∃i to b s ng&u nhiên, không có
giá tr tr v
Lu ý: Các hàm s hc ch a trong tp tin tin x lý math.h và bn phi khai
báo ∃ u chng trình theo cú pháp: #include <math.h>
Ví d 1.14:
floor(3.146) = 3
floor(3.746) = 3
ceil(56.678) = 57
ceil(-56,678) = -57
1.3.4 Kiu ký t
)c nh ngha vi t khóa char, bao gm tt c các ký t thng dùng:
+ Ch cái a, b, c.
+ Ch s 0,…,9.
+ Các du chm phân on câu: , ! …
Mt hng ký t c vit trong cp du nháy n. Ch+ng hn: ‘a’; ‘0’; và
mi hng ký t c lu tr trong mt byte ô nh.
Mt giá tr kiu ký t là 1 phn t ca mt tp hu hn các ký t c sp
xp có th t. Có nhiu cách sp xp b ch khác nhau (không tn ti 1 b ch
chu∗n cho tt c các máy tính). Tuy vy, b mã các ký t c dùng rng rãi và ph%
bin trao %i thông tin gia các máy vi tính là b mã ASCII (American Standard
Code for Information Interchange). − ây ta quan tâm ti 128 ký t u ca bng
mã ASCII (phn chu∗n xây dng b ký t cho các ngôn ng lp trình)
Khi thc hin chng trình, mt s ký t không nhìn thy c trên màn
hình, c th c trình bày trong bng sau:
Bài ging C s lp trình
-11-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Bng mã hóa các ký t không nhìn thy c
Ký t Dãy mã
Giá tr trong bng mã ASCII
Hexa-Decimal Decimal
) chuông (BEL) \a 0x07 7
Xóa trái (BackSpace) \b 0x08 8
Nhy cách ngang (HT) \t 0x09 9
Xung dòng mi (LF) \n 0x0A 10
Nhy cách ng (VT) \v 0x0B 11
Xung di (FF) \f 0x0C 12
V u dòng (CR) \r 0x0D 13
Du “ \“ 0x22 34
Du ‘ \‘ 0x2C 39
Du ? \? 0x3F 63
Du \ \\ 0x5C 92
Mã null \0 0x00 00
Ví d 1.15: Mun in ra màn hình ch “Chao ban” vi ting chuông phát ra
trc và sau khi vit ra ch “Chao ban” thì bn vit lnh: printf(“\a Chao ban\a”);
Ngoài ra bn c(ng có th s dng cách vit di dng h c s 16 hay h c
s 8. Ch+ng hn ký t ‘A’ có th c vit \x41 hay \101. Cách vit này thng
c áp dng cho na sau ca bng mã ASCII (vì na sau ca bng mã ASCII có
hình dng và v trí khó nh).
Kh∃i to giá tr cho bin ký t: const char RC = ‘\r’; LF = ‘\n’; ESC =
‘0x1B’;
Các hàm x lý ký t nm trong tp tin tin x lý ctype.h.
Mt s hàm x lý ký t
Hàm Kiu giá tr tr v Tác dng
toASCII(c) int
Tr v mã ASCII ca ký t
ch a trong bin ký t c
tolower(c) int
Tr v ký t thng ca ký
t ch a trong bin ký t c
toupper(c) int
Tr v ký t hoa ca ký t
ch
a trong bin ký t c
Ví d 1.16: Chng trình c t bàn phím mt ký t thng, chuyn thành
ký t hoa và in ra màn hình.
Gii:
Bài ging C s lp trình
-12-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
#include <stdio.h>
#include <ctype.h>
main()
{ char kytu_thuong, kytu_hoa;
kytu_thuong = getchar();
kytu_hoa = toupper(kytu_thuong);
putchar(kytu_hoa);
}
Trong chng trình ∃ ví d 1.16, hàm getchar() nhn mt ký t t bàn
phím và hàm putchar() vit mt ký t lên màn hình. Các hàm này nm trong tp tin
ctype.h.
1.3.5 Kiu d liu Boolean
Trong thc t ta thng gp loi i lng ch∋ nhn mt trong hai giá tr:
úng (TRUE) hoc sai (FALSE). Nhng trong C kiu d liu boolean không c
nh ngha mt cách tng minh, nó ∗n núp di dng s nguyên. Trong C, nhng
kt qu tính toán và tr v là s nguyên giá tr bng 0 s! c hiu là giá tr FALSE,
còn kt qu tr v khác 0 (thông thng là 1) c hiu là TRUE.
Các phép toán ca kiu boolean
Toán t logic Phép toán logic Ý ngha
&&
AND
Phép “và” logic
|| OR Phép “hoc” logic
! NOT Phép “o” hay “ph nh” logic
Bng chân tr ca các phép toán logic
X Y X && Y X || Y !X
0 0 0 0 1
0 S khác 0 0 1 1
S khác 0 0 0 1 0
S khác 0 S khác 0 1 1 0
Ví d 1.17: Kt qu ca câu lnh printf(“%d”,0&&3); là 0 trên màn hình.
1.4 Câu hi và bài t p chng 1
1. Tên dùng làm gì ? Quy tc t tên trong ngôn ng lp trình C ?
2. Chng trình ngun là gì ? Có my loi chng trình dch ?
3. Kiu d liu là gì ? Các thông tin c trng ca kiu d liu ?
4. Trình bày các kiu d liu c s∃ trong ngôn ng lp tình C. Vi mi kiu
nêu khái nim, t khóa, s byte biu di∀n, phm vi biu di∀n ?
Bài ging C s lp trình
-13-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
CHNG 2: TIN X LÝ - HNG - BIN - TOÁN T
BIU THC - CÂU LNH
Mc tiêu
Kt thúc chng, sinh viên có th:
Hiu c ý ngha và cách s dng ca các tp tin tin x lý thông dng.
Nm c các khái nim: hng, bin, toán t, biu thc, câu lnh và cách s
dng.
2.1 Tin x lý
thc hin mt chng trình trong C, chng trình ngun ca bn cn c
dch sang ngôn ng máy bng chng trình dch (compiler), nhng trc tiên phi
tri qua mt bc liên kt vi các i tng cn thit khác, công vic này c thc
hin bi b tin x lý. Tht vy, khi vit mt chng trình C, bn s không vit tt
c mà ch vit nhng gì liên quan trc tip n các công vic ca bn, phn còn li
thng là rc ri thì C ã vit sn và bn ch s dng nó nh là tài nguyên. B tin
x lý giúp bn tìm và liên kt chng trình ngun vi các tài nguyên này. Lúc biên
dch thành công, bn s thy trên a ngoài tp ngun do bn vit, bn thy có vài
tp tin khác cùng tên nhng có uôi .obj, .exe.
Các lnh C mà bn s dùng là rt nhiu, vì vy thun li cho quá trình vit
chng trình, các nhà phát trin ngôn ng C ã vit các lnh này vào trong các tp
tin tin x lý theo mt tiêu chí phc v nào ó. Ch!ng hn, b các lnh nhp, b các
lnh xut, b các hàm toán h∀c, b các lnh x lý chu#i ký t, b các lnh tng tác
màn hình, b các lnh máy in, b các lnh cho các thut toán kinh in,…
Tuy nhiên, khi vit chng trình, không phi lúc nào bn c∃ng s dng tt c
các b lnh này mà bn dùng b lnh nào thì ch cn ch ra tp tin ch%a b lnh ó
theo cú pháp:
#include <Tên tp tin cn liên kt> ho&c là #include “Tên tp tin cn liên kt”
Hai cách vit này ch khác nhau cách tìm kim b tin x lý: Cách vit u tìm
kim rng hn, trong c th mc C; Cách vit th% nhì ch thc hin tìm kim trong
th mc làm vic ca C, khi tp tin tìm kim không có ó, chng trình s báo
l#i.
Trong chng trình, nu có nhiu tp tin cn liên kt, bn vit chúng ln lt
m#i tp tin trên mt dòng và c &t u chng trình ngun. Ch!ng hn:
#include <stdio.h>
#include <math.h>
Bài ging C s lp trình
-14-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Các dòng khai báo trên không phi là lnh nên không có du ch∋m ph∋y cui
câu. Tp tin tin x lý có uôi .h (header) ch%a các nh ngh a macro, các hàm
thông dng c nh ngh a trc.
Tóm li: Trong ngôn ng lp trình C, vic dch mt tp tin ngun thành tp tin
thc thi c tin hành qua 2 bc c lp nhau: Tin x lý (Preprocessor) và biên
dch (Tranlation). Hai bc này c n i tip nhau mt cách t ng theo cách
thc mà bn có n tng rng nó ã thc hin nh là mt x lý duy nht.
S ging và khác nhau ca 2 ch th #include và #define:
+ Ch th #include c s dng nhm gp vào ni dung ca các tp tin cn có
(header file), không th thiu trong vic s dng các hàm th vin chu∋n.
+ Ch th #define hay c s dng trong các tp tin tin x lý ã c nh
ngh a trc ó và thng c các lp trình viên khai thác khi nh ngh a các ký
hiu, ch!ng hn: #define SIZE 20
CÁC TP TIN TIN X LÝ THÔNG DNG
stdio.h: Tp tin nh ngh a các hàm vào ra chu∋n (standard input/output) nh:
printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(), fread(),
fwrite(), getchar(), putchar(),
conio.h: Tp tin ch%a các nh ngh a vào/ra trong ch DOS console nh:
clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(),clreol(), kbhit(),…
math.h: Tp tin nh ngh a các hàm tính toán nh: abs(), sqrt(), log(), log10(),
sin(), cos(), acos(), asin(), atan(), pow(), exp(),…
alloc.h: Tp tin nh ngh a các hàm liên quan n vic cp phát và qun lý b
nh, nh: calloc(), realloc(), malloc(), free(); farmalloc(), farcalloc(), farfree(),…
io.h: Tp tin nh ngh a các hàm vào/ra cp thp, nh: open(), _open(),
read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(),
lock(),…
ctype.h: Tp tin nh ngh a các hàm x lý ký t, nh: toASCII(), tolower(),
toupper(),…
stdlib.h: Tp tin nh ngh a các hàm liên quan n cp phát b nh.
string.h: Tp tin nh ngh a các hàm x lý xâu ký t.
dos.h: Tp tin nh ngh a các hàm ∀c và xác lp thi gian, ngày tháng
n(m.
graphics.h: Tp tin nh ngh a các hàm liên quan n h∀a, nh:
initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(),…
Bài ging C s lp trình
-15-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
2.2 Hng (Constant)
2.2.1 Khái nim: Là i lng có giá tr không )i trong sut thi gian s dng
trong chng trình. Hng c lu tr trong b nh và có tên d∗ s dng.
2.2.2 nh ngha hng:
- Dùng ch th #define:
+ Cú pháp: #define <Tên_hng> <Giá_tr_hng>
+ Tác dng: Tên_hng c thay th bi Giá_tr_hng. Vi cách này có
th nh ngh a li c giá tr ca hng.
+ Ví d 2.1: #define MAX 100
Trong chng trình ch# nào g&p MAX s c thay bng giá tr 100
+ Chú ý: Không có du chm ph∋y cui câu nh ngh a hng.
- S dng t+ khóa const:
+ Cú pháp: const <kiu_d_liu> <tên_hng> = <giá_tr_hng>;
const <tên_hng> = <giá_tr_hng>;
+ Tác dng: nh ngh a mt hng có tên là tên_hng có giá tr bng
giá_tr_hng và sau này không th nh ngh a li (sa )i) giá tr ca hng.
+ Ví d 2.2: const long double PI = 3,141592653589793;
Const d = 7; /* hng d kiu integer, có giá tr bng 7 */
+ Lu ý: Trong kiu nh ngh a th% 2, chng trình t ng n nh kiu
ca hng là kiu ngm nh, vi turbo C hng có kiu ngm nh là int.
* S khác nhau gia khai báo hng s bng define và const ch là:
+ Vi const, ây là hng s c nh, mt hng s thc s, không th nh
ngh a li.
+ Khi g&p hng nh ngh a bng #define thì chng trình dch s lp giá tr
hng s này vào trong biu th%c cn tính. iu ó, có ngh a là khi g&p tên hng, thì
máy s dành ra s ô nh ch%a giá tr hng vào ó. Loi hng này không th
nh ngh a li trong quá trình s dng. Nó c áp dng cho loi hng s, hng xâu
ký t, hng logic,… Thc cht ca define là <tên_hng> s c thay th tng
trng cho on v(n bn, ó là <giá_tr_hng>. Khi dch, chng trình s thay th
<tên_hng> bng <giá_tr_hng>.
2.2.3 Các loi hng:
Hng int: Là s nguyên có kiu int.
Hng long: Biu di∗n thêm L hay l vào sau hng int.
Hng usigned: Biu di∗n thêm u vào sau hng int.
Bài ging C s lp trình
-16-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Hng int h 8 ho&c h 16: Các hng s trong C c ngm hiu là h 10,
nhng bn hoàn toàn có th vit hng trong h c s 8 (bt u bng 0)
hay c s h 16 (bt u bng 0X). Ví d 2.3 : 025, 057, 0x24, 0x41,…
Hng ký t: Là mt ký t c vit trong c&p du nháy n, Ví d 2.4:
‘A’, ‘3’, ‘+’,… Trình biên dch C s lu tr các hng này bng cách dùng
mã ASCII h c s 10. C lu các hng này thông qua mã ASCII ca nó
(trong h 10). Vi ví d 2.4, các giá tr c lu tr tng %ng: 97, 43, 51
i vi các hng ký t &c bit, C quy nh cách vit:
‘\’’ biu di∗n cho hng ’ ‘\”’ biu di∗n cho hng ”
‘\\’ biu di∗n cho hng \ ‘\n’ biu di∗n ký t xung dòng
‘\0’ biu di∗n cho hng 0 ‘\t’ biu di∗n ký t tab
‘\r’ biu di∗n v u dòng ‘\b’ biu di∗n ký t backspace
‘\f’ biu di∗n sang trang
Hng xâu ký t (chu#i ký t): Giá tr ca hng là dãy các ký t c bao
trong hai du nháy kép. Ví d 2.5: “Truong Dai hoc”;
* Chú ý: Các hng có th c nh ngha ngoài mi hàm, trong hàm ho!c
trong mt kh i lnh. Vi C chu∀n, khi nh ngha trong mt kh i thì dòng lnh nh
ngha phi các dòng u tiên ca kh i, tc là trc tt c các lnh khác ca kh i
lnh. Trong C++ bn có th !t nh ngha hng bt k# v trí nào.
2.3 Bin (Variable)
- Khái nim: Là i lng có giá tr thuc mt kiu nào ó ca ngôn ng lp
trình, giá tr ca bin có th c thay )i trong thi gian tn ti ca bin. Bin
c lu tr trong b nh trong và có tên d∗ s dng. Chng trình có th truy
xut n ô nh c cp phát cho bin ly ho&c ghi giá tr thông qua tên bin.
Mun s dng bin bn phi khai báo trc khi s dng.
- Cú pháp khai báo bin:
<Kiu_d_liu> <Danh_sách_tên_các_bin>;
<Kiu_d_liu> <Tên_bin> = <Giá_tr>;
Trong ó:
+ <Kiu_d_liu>: Là tên mt kiu d liu tn ti trong ngôn ng lp
trình, có th là kiu d liu chu∋n ho&c kiu d liu c nh ngh a bi ngi lp
trình.
+ <Danh_sách_tên_các_bin>: Tên các bin cùng kiu, &t cách nhau bi
du ph∋y.
+ <Giá_tr>: Giá tr khi to cho bin.
Bài ging C s lp trình
-17-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Nh vy, &c trng ca bin gm: tên bin, kiu d liu ca bin, giá tr nó
ang lu gi. Trong ngôn ng lp trình C bin có th có th có kiu void (kiu
không xác nh).
Tên ca bin trong C c &t theo nguyên tc &t tên ca ngôn ng lp trình
C (ã trình bày trong phn 1.1.3 trang 1)
- Ví d 2.6: Cách khai báo các bin có kiu s nguyên, s thc, ký t
main()
{ int m = 5, n = 10; /* Khai báo bin s nguyên m, n và khi to giá tr*/
float x,y; /* Khai báo bin s thc */
char kt = ‘A’; /* Khai báo bin ký t và khi to giá tr*/
<Các câu lnh x lý trong chng trình>
}
Lu ý: Khi g&p các lnh nh ngh a bin, chng trình dch s cp phát vùng
nh có kích thc phù hp vi kiu d liu ca bin, nu có thành phn khi to thì
chng trình s gán giá tr khi to vào vùng nh ca bin. a ch ca byte u
tiên trong vùng nh c cp phát cho bin, chính là a ch ca bin. ly a ch
ca bin, bn dùng cú pháp: &<Tên_bin>;
2.4 Biu thc và toán t
2.4.1 Biu thc (Expression)
- Khái nim: Biu th%c là mt tp hp gm các hng, hàm, bin, toán t …
Biu th%c c tính toán theo mt nguyên tc toán h∀c nào ó cho ra mt giá tr.
Trong mt biu th%c có 2 thành phn chính: Toán t (operator) c vit ra bng
du phép toán; Toán hng (operand) có th là hng, hàm, bin.
- Ví d 2.7: 15 + sin(x); Du + là toán t, 15 và sin(x) là các toán hng.
- Các loi biu th%c:
+ Biu th%c s h∀c là biu th%c mà kt qu tính toán cho ra giá tr bng s
(s nguyên, s thc).
+ Biu th%c logic: Trong ngôn ng lp trình C biu th%c logic là biu th%c
mà kt qu tính toán cho ra giá tr TRUE (giá tr khác 0 mà thng là 1) ho&c
FALSE (giá tr bng 0).
+ Biu th%c quan h là biu th%c có ch%a các toán t quan h ( <, >, <=, >=,
==, != ). Các toán hng trong biu th%c quan h có th là s nguyên, s thc, ký t
và chúng không nht thit phi tng thích vi nhau v kiu.
2.4.2 Toán t (Operator)
2.4.2.1 Toán t s hc
Bài ging C s lp trình
-18-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
- Toán t s h∀c c h) tr bi ngôn ng lp trình C là:
+ (Cng)
- (Tr+)
* (Nhân)
/ (Chia)
% (ly phn d trong phép chia 2 s nguyên)
- Ví d 2.8:
int x = 15, y = 2, z;
z = x % y;
Kt qu phép tính cho ra z = 1;
Th% t thc hin các phép toán ging nh trong toán h∀c.
2.4.2.2 Toán t thao tác bít
- Trong ngôn ng lp trình C có nhóm các toán t mà thao tác ca nó thc
hin trên t+ng bít ca các toán hng, c g∀i là toán t thao tác bít. Các toán hng
tham gia vào biu th%c có toán t thao tác bít phi có kiu s nguyên. Các phép tính
này liên quan n biu di∗n nh phân trong máy tính.
- Toán t & (phép AND theo bít)
+ Cú pháp: <Toán_hng_1> & <Toán_hng_2>
+ Ch%c n(ng: Thc hin phép AND trên t+ng bít ca 2 toán hng và tr v
kt qu có cùng kích thc vi 2 toán hng.
+ Bng chân tr ca phép &
& 0 1
0
0 0
1
0 1
+ Ví d 2.9: int a = 7, b= 14, c;
c = a & b;
Kt qu cho ra c = 6.
- Toán t | (phép OR theo bít)
+ Cú pháp: <Toán_hng_1> | <Toán_hng_2>
+ Ch%c n(ng: Thc hin phép OR trên t+ng bít ca 2 toán hng và tr v kt
qu có cùng kích thc vi 2 toán hng. Các bít tr v c tính bng kt qu phép
tuyn gia 2 bít tng %ng ca toán hng 1 và toán hng 2.
+ Bng chân tr ca phép |
Bài ging C s lp trình
-19-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
| 0 1
0
0 1
1
1 1
+ Ví d 2.10: int a = 7, b= 14, c;
c = a | b;
Kt qu cho ra c = 15.
- Toán t ~ (phép o bít)
+ Cú pháp: ~<Toán_hng>;
+ Ch%c n(ng: Toán t ~ là toán t mt ngôi, thc hin o các bít ca toán
hng: bít 1 tr thành 0, bít 0 tr thành 1.
+ Ví d 2.11: int a = 3;
b = ~a;
Kt qu cho ra b = 252.
- Toán t ^ (phép tuyn loi tr+ XOR)
+ Cú pháp: <Toán_hng_1> ^ <Toán_hng_2> ;
+ Ch%c n(ng: Thc hin phép XOR trên t+ng bít ca 2 toán hng và kt qu
tr v là s nguyên có cùng kích thc vi 2 toán hng. Các bít tr v c tính
bng kt qu ca phép XOR gia 2 bít tng %ng ca toán hng 1 và toán hng 2.
+ Bng chân tr ca phép ^
^ 0 1
0
0 1
1
1 0
+ Ví d 2.12: int a = 3, b= 10,c;
c = a^b;
Kt qu cho ra c = 9.
- Toán t << (phép dch trái)
+ Cú pháp: <Toán_hng_1> << <Toán_hng_2> ;
+ Ch%c n(ng: Dch chuyn tun t các bít ca Toán_hng_1 sang trái, s ln
dch chuyn bng giá tr ca Toán_hng_2. Vi m#i ln dch chuyn thì bít trái nht
s b loi b,, các bít bên phi s c tun t dch sang trái 1 v trí, bít bên phi nht
s c lp bng giá tr 0.
+ Ví d 2.13: int a = 12, b;
b = a << 1;
Bài ging C s lp trình
-20-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
Kt qu cho ra b = 24. Nh vy, khi dch trái s a vi s ln dch là k, nu
cha xy ra các bít có giá tr 1 ca a b mt, thì kt qu thu c là a*2
k
. Tuy nhiên,
khi dch trái k bít, có kh n(ng mt s bít cao nht có giá tr 1 ca a b loi b,, lúc
ó kt qu phép dch là a*2
k
%2
L
(L là s bít 1 b loi b,)
- Toán t >> (phép dch phi)
+ Cú pháp: <Toán_hng_1> >> <Toán_hng_2> ;
+ Ch%c n(ng: Dch chuyn tun t các bít ca Toán_hng_1 sang phi, s ln
dch chuyn bng giá tr ca Toán_hng_2. Vi m#i ln dch chuyn thì bít bên phi
nht s b loi b,, các bít bên trái c tun t dch sang phi 1 v trí, bít bên trái
nht s c lp bng giá tr 0.
+ Ví d 2.14: int a = 12, b;
b = a >> 1;
Kt qu cho ra b = 6. Nh vy, khi dch tri s a vi s ln dch là k thì thu
c kt qu a/2
k
;
Toán t << và >> là 2 toán t c dùng trong mt s phép tính &c bit
(nhân hay chia s nguyên vi mt s l∃y th+a ca 2) nhm nâng cao tc tính toán
m&c dù khi vit ra có th dài dòng.
Ví d 2.15: Trong mt on chng trình có thc hin phép tính I*80,
ti u cho vic tính toán nhm nâng cao tc tính toán, bn nên vit phép tính
di dng:
(I<<6) + (I<<4) vì 80 = 64 + 16 = 2
6
+ 2
4
Lu ý: Không tn ti phép toán logic !, &, |, ^, ~ cho kiu float, double,
long double, void hay các kiu d liu ph%c tp khác.
2.4.2.3 Toán t logic: ã trình bày mc 1.3.5 trang 12 (chng 1)
2.4.2.4 Toán t quan h
- so sánh hai biu th%c vi nhau, bn có th s dng các toán t quan h.
Kiu kt qu ca các phép toán quan h luôn cho giá tr kiu boolean.
Ký hiu toán t Ý ngha
!= So sánh khác nhau
== So sánh bng nhau
>= So sánh ln hn ho&c bng
<= So sánh nh, hn ho&c bng
> So sánh ln hn
< So sánh nh, hn
Bài ging C s lp trình
-21-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
- Lu ý:
+ Toán t == (hai du bng) là toán t quan h dùng so sánh 2 biu th%c
có bng nhau hay không. Du = (mt du bng) là toán t gán dùng gán biu
th%c bên phi cho bin v bên trái.
+ Hai v ca biu th%c so sánh phi cùng kiu (tr+ kiu thc và kiu
nguyên) và chúng có th là kiu s nguyên, s thc, char
- Ví d 2.16: Kt qu ca phép tính (7==5) là 0
Kt qu ca phép tính (6 >= 6) là 1
2.4.2.5 Toán t iu kin 3 ngôi
- Cú pháp: <Biu_th%c> ? <Giá_tr_1>: < Giá_tr_2>;
Trong ó: Biu_th%c, Giá_tr_1, Giá_tr_2 là các biu th%c.
- Tác dng: Toán t iu kin 3 ngôi s tính toán Biu_th%c và c lng giá
tr ca nó, nu Biu_th%c có giá tr úng thì biu th%c Giá_tr_1 c tính toán và
tr thành giá tr ca biu th%c, nu Biu_th%c có giá tr sai thì biu th%c Giá_tr_2
c tính toán và tr thành giá tr ca biu th%c.
- Ví d 2.17: int x = 5, y = 7, z;
z = x > y? x:y;
Kt qu phép tính z = 7;
2.4.2.6 Các toán t khác
- Toán t tng (++) và toán t gim ( ): Giúp cho chng trình t(ng ho&c
gim giá tr ch%a trong mt bin i 1 n v. Chúng tng ng vi +=1 ho&c -=1.
Vì vy, các dòng lnh sau là tng ng:
A++;
A+=1;
A = A + 1;
Tính cht ca toán t này có th là tin t ho&c hu t, ngh a là toán t ++,
có th vit trc tên bin (++A) ho&c vit sau tên bin (A++). Trong nhng
trng hp n gin, hai cách vit trên có cùng ý ngh a, nhng trong các thao
tác khác, khi mà kt ca vic t(ng hay gim c s dng trong mt biu th%c
thì chúng có th có mt ý ngh a khác bit quan tr∀ng v m&t ý ngh a.
+ Ví d 2.18:
B = 3;
A = ++B;
Kt qu xut ra A = 4, B = 4.
Nhng nu thc hin on lnh sau:
Bài ging C s lp trình
-22-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
B = 3;
A = B++;
Kt qu xut ra A = 3, B = 4.
Nh vy, trong trng hp toán t c s dng nh là tin t, giá tr c
t(ng trc khi biu th%c c tính và giá tr ã t(ng c s dng trong biu th%c.
Trong trng hp ngc li, toán t c s dng nh là hu t, giá tr trong bin
ch c t(ng sau khi ã tham gia tính toán trong biu th%c.
- Toán t du phy (,): M#i câu lnh ca C c kt thúc bng du chm
ph∋y, song nó có th ch%a mt dãy lnh (dãy biu th%c tính toán c lp) ch% không
phi ch có mt biu th%c tính mt giá tr. Trong trng hp ó, C cung cp cho bn
toán t du ph∋y (,) c s dng kt hp các biu th%c li vi nhau. Bên trái
toán t du ph∋y luôn c xem là kiu void. iu ó, có ngh a là biu th%c bên
phi tr thành giá tr ca t)ng các biu th%c c phân cách nhau bi du ph∋y.
Ví d 2.19: x = (y=3,y+1);
Cách tính toán ca biu th%c trên: trc ht gán giá tr 3 cho y, ri thc hin
tính y + 1 = 4, sau ó gán 4 cho bin x. C&p du ngo&c n là cn thit vì toán t
du ph∋y có u tiên thp hn toán t gán.
- Toán t sizeof (cho bit kích thc c a kiu d! liu, i t∀ng d! liu)
+ Cú pháp: sizeof(<Kiu_d_liu>);
sizeof(<i_tng_d_liu>);
+ Tác dng: Cho bit kích thc (tính theo byte) ca kiu d liu c∃ng nh
ca i tng d liu.
+ Ví d 2.20: int n,x;
x = sizeof(n);
Kt qu ca phép gán x = 2.
- Toán t & (ly a ch#)
+ Cú pháp: &<Tên_bin>;
&<Tên_hng>;
+ Tác dng: Tr li a ch ca mt bin, hng ã c cp phát trong b nh
trong.
+ Ví d 2.21: int x;
printf(“%p”,&x);
In ra a ch ca bin x ã c cp phát b nh trong.
- Toán t * (truy xut giá tr qua con tr∃)
+ Cú pháp: *<Tên_con_tr,>;
Bài ging C s lp trình
-23-
Ging viên: Th.S Trn Tn T - Khoa CNTT – i hc Phm Vn ng.
+ Tác dng: Truy xut gián tip giá tr ca bin thông qua con tr, qun lý nó.
+ Ví d 2.22: int x = 5;
int *p;
p = &x;
printf(“%d”,*p);
Kt qu in ra ni dung ca bin x c qun lý bi con tr, p
(t%c in ra màn hình giá tr 5).
2.4.2.7 % u tiên c a các toán t
Th% t u tiên ca các toán t c trình bày trong bng sau (t+ cao xung
thp, trong m#i m%c thì u tiên t+ trái sang phi)
Th t& u tiên các phép toán Chiu tính toán
( ) [ ] -> T+ trái qua phi
! ~ & *(truy xut gián tip) - ()i du) T+ phi qua trái
++ (ép kiu) sizeof
* (phép nhân) / % T+ trái qua phi
+ - (phép tr+) T+ trái qua phi
<< >> (các phép dch bít) trái qua phi
<, <=, >, >= T+ trái qua phi
== != T+ trái qua phi
& (phép AND trên bít)
^ (phép XOR trên bít)
| (phép OR trên bít)
&&
||
?:
= += -= *= /= %= <<= >>= &= T+ phi qua trái
\+ ^= |= (du ph∋y)
Ví d 2.22: (100 > 76) && (‘B’ < ‘A’)
1 && 0
0
2.4.2.8 Chuyn ∋i kiu
C cho phép trn l−n kiu giá tr vi nhau trong cùng biu th%c tính toán.
ng thi m#i loi kiu d liu phn %ng khác nhau i vi mt phép toán. Trong