Khái niệm về biểu thức Biểu thức là một sự kết hợp giữa các toán tử operator và các toán hạng operandtheo đúng một trật tự nhất định.. Trong trường hợp, biểu thức có nhiều toán tử, ta
Trang 1BIỂU THỨC
CHƯƠNG 2
BIỂU THỨC BIỂU THỨC (Expressions)
Trang 21 Khái niệm về biểu thức
Biểu thức là một sự kết hợp giữa các toán
tử (operator) và các toán hạng (operand)theo đúng một trật tự nhất định
ỗ
Mỗi toán hạng có thể là một hằng, một biếnhoặc một biểu thức khác
Trong trường hợp, biểu thức có nhiều toán
tử, ta dùng cặp dấu ngoặc đơn () để chỉ
đị h t á tử à đượ thự hiệ t ướ
định toán tử nào được thực hiện trước
Trang 32 Kiểu dữ liệu(Data type)
C/C++ có năm kiểu dữ liệu cơ sở:
−Kiểu vô định (void)
Kích thước và phạm vi của những kiểu dữliệu này có thể thay đổi tùy theo loại CPU vàtrình biên dịch
Trang 42 Kiểu dữ liệu(Data type)
Kiểu char chứa giá trị của bộ mã ASCII
(Amercican Standard Code for Information Interchange) Kích thước là 1 byte.
Kích thước của kiểu int là 16 bits (2 bytes)trên môi trường 16-bit như DOS và 32 bits(4 b t ) t ê ôi t ườ 32 bit hư
(4 bytes) trên môi trường 32-bit nhưWindows 95
Kiể id dù để kh i bá hà khô t ả
Kiểu void dùng để khai báo hàm không trả
về giá trị hoặc tạo nên các con trỏ tổngquát (generic pointers)
quát (generic pointers)
Trang 52 Kiểu dữ liệu(Data type)
Trang 63 Định danh (Identifier Name)
Trong C/C++, tên biến, hằng, hàm,…
được gọi là định danh
Những định danh này có thể là 1 hoặc nhiều
ký tự Ký tự đầu tiên phải là một chữ cáihoặc dấu _ (underscore), những ký tự theo
hải là hữ ái hữ ố h ặ dấ
sau phải là chữ cái, chữ số, hoặc dấu _
C/C++ phân biệt ký tự HOA và thường
Định danh không được trùng với từ khóa(keywords)
Trang 8 Tất cả biến phải được khai báo trước khi sử
Tất cả biến phải được khai báo trước khi sửdụng
Cách khai báo:
Cách khai báo:
type variableNames ;
t là ột t á kiể dữ liệ hợ lệ
− type: là một trong các kiểu dữ liệu hợp lệ
− variableNames: tên của một hay nhiềubiến phân cách nhau bởi dấu phẩy
biến phân cách nhau bởi dấu phẩy
Trang 106 Phạm vi của biến
Biến cục bộ (local variables)
− Những biến được khai báo bên trong mộthàm gọi là biến cục bộ
− Các biến cục bộ chỉ được tham chiếu đếnbởi những lệnh trong khối (block) có khaibáo biến
− Một khối được đặt trong cặp dấu { }
− Biến cục bộ chỉ tồn tại trong khi khối chứa
nó đang thực thi và bị hủy khi khối chứa nó
thực thi xong
Trang 126 Phạm vi của biến
Tham số hình thức(formal parameters)
− Nếu một hàm có nhận các đối số truyềnvào hàm thì nó phải khai báo các biến
để nhận giá trị của các đối số khihàm được gọi
− Những biến này gọi là các tham sốhình thức Những biến này được sử dụng
iố hư á biế bộ
giống như các biến cục bộ
Trang 13for(int i=from ; i<=to ; i++) ( ; ; )total +=i;
return total;
return total;
}
Trang 146 Phạm vi của biến
Biến toàn cục (global variables)
− Biến toàn cục có phạm vi là toàn bộchương trình
− Tất cả các lệnh có trong chương trìnhđều có thể tham chiếu đến biến toàncục
− Biến toàn cục được khai báo bên ngoài tấtụ ợ g
cả hàm
Trang 15cout << “Value of gVar= “ << gVar; increase();
cout << “After increased, gVar= “ << gVar; decrease(); cout << “After decreased, gVar= “ << gVar;
}
Trang 17ứng Hằng còn được gọi là literals.
Hằng ký tự được đặt trong cặp nháy đơn
Ví d ' ’
Ví dụ: 'a’
Hằng nguyên là những số mà không cóphần thập phân
phần thập phân
Ví dụ 100 , -100
Trang 22Lưu ý: phía bên trái dấu = phải là một biến
hay con trỏ và không thể là hàm hay hằng
Ví dụ:
total = a + b + c + d;
Trang 2311 Chuy
11 Chuyểển đ n đổ ổi ki i kiểểu trong câu l u trong câu lệệnh gán nh gán
11 Chuy
11 Chuyểển đ n đổ ổi ki i kiểểu trong câu l u trong câu lệệnh gán nh gán
y Đối với câu lệnh gán, giá trị của biểu thức
Trang 2411 Chuy
11 Chuyểển đ n đổ ổi ki i kiểểu trong câu l u trong câu lệệnh gán nh gán
11 Chuy
11 Chuyểển đ n đổ ổi ki i kiểểu trong câu l u trong câu lệệnh gán nh gán
y Khi chuyển đổi từ kiểu dữ liệu có miền giá
ể
trị nhỏ sang kiểu dữ liệu có miền giá trị lớnhơn:charÆintÆlongÆfloatÆdouble, thì việcchuyển đổi kiểu này là không mất mátthông tin
Khi h ể đổi từ kiể dữ liệ ó iề iá
y Khi chuyển đổi từ kiểu dữ liệu có miền giátrị lớn sang kiểu dữ liệu có miền giá trị nhỏhơn:doubleÆfloatÆlongÆintÆchar thì
hơn:doubleÆfloatÆlongÆintÆchar, thìviệc chuyển đổi kiểu này là mất mát thôngtin
Trang 2612 Toán t
12 Toán tử ử ssố ố hhọ ọc (arithmetic operators) c (arithmetic operators)
12 Toán t
12 Toán tử ử ssố ố hhọ ọc (arithmetic operators) c (arithmetic operators)
y Khi tử số và mẫu số của phép chia là sốnguyên thì đó là phép chia nguyên nênphần dư của phép chia nguyên bị cắt bỏ
Ví dụ: 5/2 cho kết quả là 2
y Toán tử lấy phần dư % (modulus operator)y p ( p )chỉ áp dụng với số nguyên
Trang 2713 Toán tử gán phức hợp
Trang 29y Ví dụ:
a++;//tương đương với a+=1; và a=a+1; g g ;a ;//tương đương với a-=1; và a=a-1
Trang 30y Tiền tố (prefix) : Toán tử ++/ đặt trước
toán hạng, hành động tăng/giảm trên toán
hạng được thực hiện trước, sau đó giá trịmới của toán hạng sẽ tham gia định trị củabiểu thức
biểu thức
y Ví dụ:
B 3;
A=++B;
Kết quả: A chứa giá trị 4, B chứa giá trị 4
Kết quả: A chứa giá trị 4, B chứa giá trị 4
Trang 31y Hậu tố (postfix): Toán tử ++/ đặt sau
toán hạng, giá trị trong toán hạng được
tăng/giảm sau khi đã tính toán
Trang 33biểu thức, thì độ ưu tiên thực hiện như sau:
Toán tử Độ ưu tiên
Toán tử Độ ưu tiên
Trang 3415
15 Toán tử quan hệ & luận lý Toán tử quan hệ & luận lý
(relational & logical operators)
y Toán tử quan hệ được định trị là true hoặc false
>= So sánh lớn hơn hoặc bằng 6 3 >= 5 //kết quả1
>= So sánh lớn hơn hoặc bằng 6.3 >= 5 //kết quả1
Trang 3615
15 Toán tử quan hệ & luận lý Toán tử quan hệ & luận lý
(relational & logical operators)
y Độ ưu tiên của toán tử quan hệ và luận lý:
Toán tử Độ ưu tiên
Trang 3816 Toán tử ?? (( ?? operator)
16 Toán tử ?? (( ?? operator)
y Toán tử ? là một toán tử ba ngôi do đó phải
có ba toán hạng
y Dạng tổng quát của toán tử ? là:
Exp1 ? Exp2 : Exp3;
y Exp1, Exp2, và Exp3 là các biểu thức
y Ý nghĩa:
−Nếu Exp1 đúng thì Exp2 được định trị và
ể
nó trở thành giá trị của biểu thức
−Ngược lại, nếu Exp1 sai, Exp3 được định
à ở hà h á ủ b ể hứtrị và trở thành giá trị của biểu thức
Trang 40mà mỗi kiểu dữ liệu có số byte khác nhau
mà mỗi kiểu dữ liệu có số byte khác nhau
Trang 4118
18 Toán t Toán tử ử ddấấu ph u phẩẩy (comma operator) y (comma operator)
18
18 Toán t Toán tử ử ddấấu ph u phẩẩy (comma operator) y (comma operator)
y Toán tử comma buộc các biểu thức cùngvới nhau
y Biểu thức bên trái của toán tử comma luônluôn được định trị như void, biểu thức bênphải được định trị và trở thành giá trị củabiể thứ
biểu thức
y Dạng tổng quát của toán tử comma:
(exp_1, exp_2, , exp_n)
Trang 4218
18 Toán t Toán tử ử ddấấu ph u phẩẩy (comma operator) y (comma operator)
18
18 Toán t Toán tử ử ddấấu ph u phẩẩy (comma operator) y (comma operator)
y Các biểu thức được định trị từ trái sang
ể
phải, biểu thức cuối cùng (exp_n) được địnhtrị và trở thành giá trị của toàn bộ biểuthức
Trang 4319 Độ ưu tiên của các toán tử
Trang 4420 Biểu thức (expressions)
20 Biểu thức (expressions)
y Một biểu thức trong C/C++ là sự kết hợpcủa các thành phần: toán tử, hằng, biến, vàhàm có trả về giá trị
hứ đ h ủ b ể hứ ù h ộ à
y Thứ tự định trị của biểu thức tùy thuộc vào
độ ưu tiên của các toán tử
Để biể thứ õ à à thự hiệ iệ đị h
y Để biểu thức rõ ràng và thực hiện việc địnhtrị đúng, nên dùng cặp dấu ngoặc tròn ()bao quanh các biểu thức con của biểu thứcbao quanh các biểu thức con của biểu thức
Trang 4621 Chuy Chuyểển ki n kiểểu trong bi u trong biểểu th u thứ ứcc
21
21 Chuy Chuyểển ki n kiểểu trong bi u trong biểểu th u thứ ức c
y Khi các hằng và biến của những kiểu khác
ể
nhau tồn tại trong một biểu thức, giá trịcủa chúng phải được chuyển thành cùngkiểu trước khi các phép toán giửa chúngđược thực hiện
y Trình biên dịch sẽ thực hiện việc chuyển
y Trình biên dịch sẽ thực hiện việc chuyểnkiểu (convert) tự động đến kiểu của toánhạng có kiểu lớn nhất Việc chuyển kiểu nàygọi là thăng cấp kiểu (type promotion)