Xem mẫu
- KỸ THUẬT LẬP TRÌNH C
BÀI 2: BIỂU THỨC & CÁC PHÉP TOÁN
Hoàng Quốc Tuấn
tuanhq@fpt.edu.vn
http://hoangquoctuanpro.wordpress.com
- Nội dung
I. Biểu thức
II. Các phép toán
III. Biểu thức điều kiện
IV. Bài tập minh họa
2
- I – BIỂU THỨC
Biểu thức là một sự kết hợp các giá trị (hằng,
biến, hàm) bằng các phép tính để sinh ra một
giá trị mới.
Kiểu của biểu thức là kiểu của giá trị mà nó sinh
ra.
Ví dụ:
int x = 2, y = 7; int i, a = 3;
x = (x + 2 * y); a = (i = a * 11);
3
- II – CÁC PHÉP TOÁN
1. Các phép toán số học
2. Các phép toán thao tác trên bit
3. Các phép toán quan hệ và logic
4. Chuyển đổi kiểu dữ liệu
5. Các phép toán tăng giảm
6. Câu lệnh gán
4
- 1. Các phép toán số học
Các phép toán số học bao gồm: cộng (+), trừ (-),
nhân (*), chia (/) thực hiện trên các kiểu dữ liệu
int, char, float, double.
Ví dụ:
float x = 15.0;
float y = 3.0;
float phep_cong = x + y;
/* 15.0 + 3.0 = 18.000000 */
float phep_chia = x / y;
/* 15.0 / 3.0 = 5.000000 */
5
- 1. Các phép toán số học
Phép chia (/) của hai số nguyên cho ra kết quả
thương là số nguyên.
Để lấy phần dư của phép chia hai số nguyên thì
phải sử dụng phép modulo (%).
Ví dụ:
int x = 10; int y = 3;
int kq1 = x / y;
/* cho kết quả là số nguyên: 10/3 =3 */
int kq2 = x % y;
/* 10%3 = 1 ( 10/3 = 3 dư 1 ) */ 6
- 1. Các phép toán số học
Ngoài các phép toán, ngôn ngữ C còn trang bị
cho chúng ta một số hàm toán học chuẩn được
khai báo trong thư viện math.h
abs sqrt pow sin
cos tan asin acos
atan floor ceil log
...
7
- 2. Các phép toán thao tác bit
Các phép toán thao tác bit cho phép xử lý
từng bit của một số nguyên (không dùng
cho kiểu float và double)
Các toán tử
and &, or |, xor ^
dịch trái , bù bít ~
8
- 2. Các phép toán thao tác bit
Bảng giá trị chân lý
Kết quả
Toán hạng 1 Toán hạng 2
& | ^
1 1 1 1 0
1 0 0 1 1
0 1 0 1 1
0 0 0 0 0
Ví dụ: Giả thiết một số nguyên (int) được biểu diễn bằng 16 bit.
unsigned int a = 3737; /* 0000111010011001*/
unsigned int b = 7474; /* 0001110100110010*/
unsigned int c = a | b; /* 0001111110111011*/
unsigned int d = b&c; /* 0001110100110010*/
unsigned int e = c^d; /* 0000001010001001*/ 9
- 2. Các phép toán thao tác bit
Biểu thức a > n sẽ dịch chuyển các bit trong a
sang phải n vị trí.
Đối với kiểu không dấu, ta có:
a
- 2. Các phép toán thao tác bit
Ví dụ:
unsigned int a = 3737; /* 0000111010011001 */
unsigned int b = a > 2; /* 0000001110100110 */
unsigned int d = c
- 2. Các phép toán thao tác bit
Bù bit ~:
~1 = 0
~0 = 1
Ví dụ:
unsigned int a = 3737; /* 0000111010011001*/
unsigned int b = ~a; /* 1111000101100110*/
12
- 3. Các phép toán quan hệ và logic
Các phép toán quan hệ
Các phép toán logic
13
- 3.1. Các phép toán quan hệ
Các phép toán quan hệ so sánh giá trị của các
toán hạng, rồi co kết quả 0 (sai), hoặc 1(đúng).
Các phép toán so sánh:
bằng == lớn hơn > lớn hơn hoặc bằng >=
khác != nhỏ hơn < nhỏ hơn hoặc bằng
- 3.1. Các phép toán quan hệ
Ví dụ:
float kq1 = (3 > 5); /* kq1 = (3 > 5) = 0.000000 */
float kq2 = (5 >= 3); /* kq2 = (5 > 3) = 1.000000 */
float kq3 = (12 + 6 != 5; /* (18 != 5) = 1.000000 */
float kq4 = (15 != 3*5) /* 15 != 3*5) = 0.000000 */
15
- 3.2. Các phép toán logic
Các phép toán logic dùng để kết hợp các biểu
thức khác nhau thành một biểu thức logic.
Các phép toán: NOT (!), AND (&&), OR (||)
Kết quả cho ra giá trị 0 (sai), hoặc 1 (đúng).
Kết quả
A B
!A A && B A || B
0 0 1 0 0
0 1 1 0 1
1 0 0 0 1
1 1 0 1 1
16
- 4. Chuyển đổi kiểu dữ liệu (ép kiểu)
trong một phép toán khi hai toán hạng khác kiểu dữ liệu thì
kiểu dữ liệu thấp được nâng thành kiểu dữ liệu cao trước khi
tính toán.
Ví dụ:
− Biểu thức f + i, nếu f có kiểu float, i có kiểu int thì i sẽ
tạm thời được chuyển kiểu sang kiểu float để để thực hiện
phép tính.
− Biểu thức f = i1 + i2, nếu f kiểu float, i1 và i2 kiểu int,
i1=10, i2 =3, thì f sẽ có giá trị là 3.0 (kết quả không chính
xác). Muốn kết quả chính xác, ta phải ép kiểu:
f = (float) i1 + i2;
17
- 4. Chuyển đổi kiểu dữ liệu (ép kiểu)
Ví dụ:
int a, b = 4, c = 5 ;
float x, y = 6.8, z = 3.8 ;
a=y; /* a = 6 */
a = -y ; /* a = -6 */
x = a / b + c ; /* x = 4.0 */
x = a / b + (float) c ; /* x = 4.0 */
x = (float) a / b + c ; /* x = 3.5 */
a=y–z; /* a = 3 */
18
- 5. Các phép toán tăng giảm
Phép toán tăng là ++
Phép toán giảm là --
Các phép toán tăng giảm dùng để tăng hoặc giảm một đơn
vị đối với các biến.
Cú pháp:
Tăng giảm sau: biến++, biến--
Tăng giảm trước: ++biến, --biến
Ví dụ:
i = 5; j = 8 ; i = 5; j = 8 ;
i++; // kết quả i = 6 i--; // kết quả i = 4
++j; // kết quả j = 9 --j; // kết quả j = 7
19
- 5. Các phép toán tăng giảm
Phép toán giảm trước và phép toán tăng giảm sau có sự
khác nhau khi sử dụng nó trong biểu thức có sự phối hợp các
phép toán.
− Phép toán tăng giám trước sẽ thực hiện phép toán tăng
giảm của biến trước rồi mới thực hiện các phép toán khác.
− Phép toán tăng giám sau sẽ thực hiện phép toán tăng giảm
của biến sau khi phép toán khác khác đã thực hiện.
Ví dụ:
i = 3; i = 3;
tong = ++i; // i = 4, tong = 4 tong = i ++; // i = 4, tong = 3
20
nguon tai.lieu . vn