Ngôn Ngữ Lập Trình C: Biểu Thức - .vn
Có thể bạn quan tâm
- Trang chủ
- Tra cứu tài liệu
- Đóng góp
- Giới thiệu
-
- Đăng ký
- Đăng nhập
Đăng nhập
- Ghi nhớ
- Quên mật khẩu?
Biểu thức
Tác giả: Nguyễn Hữu Tuấn 0Toán hạng có thể xem là một đại lượng có một giá trị nào đó. Toán hạng bao gồm hằng, biến, phần tử mảng và hàm.
Biểu thức lập nên từ các toán hạng và các phép tính để tạo nên những giá trị mới. Biểu thức dùng để diễn đạt một công thức, một qui trình tính toán, vì vậy nó là một thành phần không thể thiếu trong chương trình.
Biểu thức là một sự kết hợp giữa các phép toán và các toán hạng để diễn đạt một công thức toán học nào đó. Mỗi biểu thức có sẽ có một giá trị. Như vậy hằng, biến, phần tử mảng và hàm cũng được xem là biểu thức.
Trong C, ta có hai khái niệm về biểu thức :
Biểu thức gán.
Biểu thức điều kiện .
Biểu thức được phân loại theo kiểu giá trị : nguyên và thực. Trong các mệnh đề logic, biểu thức được phân thành đúng ( giá trị khác 0 ) và sai ( giá trị bằng 0 ).
Biểu thức thường được dùng trong :
Vế phải của câu lệnh gán.
Làm tham số thực sự của hàm.
Làm chỉ số.
Trong các toán tử của các cấu trúc điều khiển.
Tới đây, ta đã có hai khái niệm chính tạo nên biểu thức đó là toán hạng và phép toán. Toán hạng gồm : hằng, biến, phần tử mảng và hàm trước đây ta đã xét. Dưới đây ta sẽ nói đến các phép toán. Hàm sẽ được đề cập trong chương 6.
Biểu thức gán là biểu thức có dạng :
v=e
Trong đó v là một biến ( hay phần tử mảng ), e là một biểu thức. Giá trị của biểu thức gán là giá trị của e, kiểu của nó là kiểu của v. Nếu đặt dấu ; vào sau biểu thức gán ta sẽ thu được phép toán gán có dạng :
v=e;
Biểu thức gán có thể sử dụng trong các phép toán và các câu lệnh như các biểu thức khác. Ví dụ như khi ta viết
a=b=5;
thì điều đó có nghĩa là gán giá trị của biểu thức b=5 cho biến a. Kết qủa là b=5 và a=5.
Hoàn toàn tương tự như :
a=b=c=d=6; gán 6 cho cả a, b, c và d
Ví dụ
z=(y=2)*(x=6); { ở đây * là phép toán nhân }
gán 2 cho y, 6 cho x và nhân hai biểu thức lại cho ta z=12.
Các phép toán hai ngôi số học là
Phép toán | Ý nghiã | Ví dụ |
+ | Phép cộng | a+b |
- | Phép trừ | a-b |
* | Phép nhân | a*b |
/ | Phép chia | a/b ( Chia số nguyên sẽ chặt phần thập phân ) |
% | Phép lấy phần dư | a%b( Cho phần dư của phép chia a cho b ) |
Có phép toán một ngôi - ví du -(a+b) sẽ đảo giá trị của phép cộng (a+b).
Ví dụ
11/3=3
11%3=2
-(2+6)=-8
Các phép toán + và - có cùng thứ tự ưu tiên, có thứ tự ưu tiên nhỏ hơn các phép * , / , % và cả ba phép này lại có thứ tự ưu tiên nhỏ hơn phép trừ một ngôi.
Các phép toán số học được thực hiện từ trái sang phải. Số ưu tiên và khả năng kết hợp của phép toán được chỉ ra trong một mục sau này
Phép toán quan hệ và logic cho ta giá trị đúng ( 1 ) hoặc giá trị sai ( 0 ). Nói cách khác, khi các điều kiện nêu ra là đúng thì ta nhận được giá trị 1, trái lại ta nhận giá trị 0.
Các phép toán quan hệ là
Phép toán | Ý nghiã | Ví dụ |
> | So sánh lớn hơn | a>b 4>5 có giá trị 0 |
>= | So sánh lớn hơn hoặc bằng | a>=b 6>=2 có giá trị 1 |
< | So sánh nhỏ hơn | a<b 6<=7 có giá trị 1 |
<= | So sánh nhỏ hơn hoặc bằng | a<=b8<=5 có giá trị 0 |
== | So sánh bằng nhau | a==b6==6 có giá trị 1 |
!= | So sánh khác nhau | a!=b9!=9 có giá trị 0 |
Bốn phép toán đầu có cùng số ưu tiên, hai phép sau có cùng số thứ tự ưu tiên nhưng thấp hơn số thứ tự của bốn phép đầu.
Các phép toán quan hệ có số thứ tự ưu tiên thấp hơn so với các phép toán số học, cho nên biểu thức :
i<n-1
được hiểu là i<(n-1).
Các phép toán logic
Trong C sử dụng ba phép toán logic :
Phép phủ định một ngôi !
a | !a | ||
khác 0 | 0 | ||
bằng 0 | 1 |
Phép và (AND) &&
Phép hoặc ( OR ) ||
a | b | a&&b | a||b |
khác 0 | khác 0 | 1 | 1 |
khác 0 | bằng 0 | 0 | 1 |
bằng 0 | khác 0 | 0 | 1 |
bằng 0 | bằng 0 | 0 | 0 |
Các phép quan hệ có số ưu tiên nhỏ hơn so với ! nhưng lớn hơn so với && và ||, vì vậy biểu thức như :
(a<b)&&(c>d)
có thể viết lại thành :
a<b&&c>d
Cả a và b có thể là nguyên hoặc thực.
C đưa ra hai phép toán một ngôi để tăng và giảm các biến ( nguyên và thực ). Toán tử tăng là ++ sẽ cộng 1 vào toán hạng của nó, toán tử giảm -- thì sẽ trừ toán hạng đi 1.
Ví dụ :
n=5
++n Cho ta n=6
--n Cho ta n=4
Ta có thể viết phép toán ++ và -- trước hoặc sau toán hạng như sau : ++n, n++, --n, n--.
Sự khác nhau của ++n và n++ ở chỗ : trong phép n++ thì tăng sau khi giá trị của nó đã được sử dụng, còn trong phép ++n thì n được tăng trước khi sử dụng. Sự khác nhau giữa n-- và --n cũng như vậy.
Ví dụ :
n=5
x=++n Cho ta x=6 và n=6
x=n++ Cho ta x=5 và n=6
Các phép toán có độ ưu tiên khác nhau, điều này có ý nghĩa trong cùng một biểu thức sẽ có một số phép toán này được thực hiện trước một số phép toán khác.
Thứ tự ưu tiên của các phép toán được trình bày trong bảng sau :
TT | Phép toán | Trình tự kết hợp |
1 | () [] -> | Trái qua phải |
2 | ! ~ & * - ++ -- (type ) sizeof | Phải qua trái |
3 | * ( phép nhân ) / % | Trái qua phải |
4 | + - | Trái qua phải |
5 | << >> | Trái qua phải |
6 | < <= > >= | Trái qua phải |
7 | == != | Trái qua phải |
8 | & | Trái qua phải |
9 | ^ | Trái qua phải |
10 | | | Trái qua phải |
11 | && | Trái qua phải |
12 | || | Trái qua phải |
13 | ?: | Phải qua trái |
14 | = += -= *= /= %= <<= >>= &= ^= |= | Phải qua trái |
15 | , | Trái qua phải |
Ví dụ :
*--px=*(--px) ( Phải qua trái )
8/4*6=(8/4)*6 ( Trái qua phải )
Nên dùng các dấu ngoặc tròn để viết biểu thức một cách chính xác.
Các phép toán lạ
Dòng 1
[ ] Dùng để biểu diễn phần tử mảng, ví dụ : a[i][j]
. Dùng để biểu diễn thành phần cấu trúc, ví dụ : ht.ten
-> Dùng để biểu diễn thành phần cấu trúc thông qua con trỏ
Dòng 2
* Dùng để khai báo con trỏ, ví dụ : int *a
& Phép toán lấy địa chỉ, ví dụ : &x
( type) là phép chuyển đổi kiểu, ví dụ : (float)(x+y)
Dòng 15
Toán tử , thường dùng để viết một dãy biểu thức trong toán tử for.
Việc chuyển đổi kiểu giá trị thường diễn ra một cách tự động trong hai trường hợp sau :
Khi gán biểu thức gồm các toán hạng khác kiểu.
Khi gán một giá trị kiểu này cho một biến ( hoặc phần tử mảng ) kiểu khác. Điều này xảy ra trong toán tử gán, trong việc truyền giá trị các tham số thực sự cho các đối.
Ngoài ra, ta có thể chuyển từ một kiểu giá trị sang một kiểu bất kỳ mà ta muốn bằng phép chuyển sau :
( type ) biểu thức
Ví dụ :
(float) (a+b)
Chuyển đổi kiểu trong biểu thức
Khi hai toán hạng trong một phép toán có kiểu khác nhau thì kiểu thấp hơn sẽ được nâng thành kiểu cao hơn trước khi thực hiện phép toán. Kết quả thu được là một giá trị kiểu cao hơn. Chẳng hạn :
Giữa int và long thì int chuyển thành long.
Giữa int và float thì int chuyển thành float.
Giữa float và double thì float chuyển thành double.
Ví dụ :
1.5*(11/3)=4.5
1.5*11/3=5.5
(11/3)*1.5=4.5
Chuyển đổi kiểu thông qua phép gán
Giá trị của vế phải được chuyển sang kiểu vế trái đó là kiểu của kết quả. Kiểu int có thể được được chuyển thành float. Kiểu float có thể chuyển thành int do chặt đi phần thập phân. Kiểu double chuyển thành float bằng cách làm tròn. Kiểu long được chuyển thành int bằng cách cắt bỏ một vài chữ số.
Ví dụ :
int n;
n=15.6 giá trị của n là 15
Đổi kiểu dạng (type)biểu thức
Theo cách này, kiểu của biểu thức được đổi thành kiểu type theo nguyên tắc trên.
Ví dụ :
Phép toán : (int)a
cho một giá trị kiểu int. Nếu a là float thì ở đây có sự chuyển đổi từ float sang int. Chú ý rằng bản thân kiểu của a vẫn không bị thay đổi. Nói cách khác, a vẫn có kiểu float nhưng (int)a có kiểu int.
Đối với hàm toán học của thư viện chuẩn, thì giá trị của đối và giá trị của hàm đều có kiểu double, vì vậy để tính căn bậc hai của một biến nguyên n ta phải dùng phép ép kiểu để chuyển kiểu int sang double như sau :
sqrt((double)n)
Phép ép kiểu có cùng số ưu tiên như các toán tử một ngôi.
Muốn có giá trị chính xác trong phép chia hai số nguyên cần dùng phép ép kiểu: ((float)a)/b
Để đổi giá trị thực r sang nguyên, ta dùng :
(int)(r+0.5)
Chú ý thứ tự ưu tiên :
(int)1.4*10=1*10=10
(int)(1.4*10)=(int)14.0=14
0 TẢI VỀ TÁI SỬ DỤNG- Tài liệu PDF
- Tài liệu EPUB
- Nguyễn Hữu Tuấn
- 1 GIÁO TRÌNH | 14 TÀI LIỆU
- Ngôn ngữ lập trình C
- Giới thiệu
- Các khái niệm cơ bản
- Các lệnh vào ra
- Biểu thức
- Cấu trúc cơ bản của chương trình
- Cấu trúc điều khiển
- Hàm
- Con trỏ
- Cấu trúc
- Tập tin - file
- Đồ hoạ
- Bài tập
- Tài liệu tham khảo
- Các khái niệm cơ bản
- Biểu thức
- Tập tin - file
- Con trỏ
- Bài tập
- Hàm
- Cấu trúc cơ bản của chương trình
- Các khái niệm cơ bản (2)
- Đồ hoạ
- Các lệnh vào ra
VOER message
×VOER message
Thư viện Học liệu Mở Việt Nam (VOER) được tài trợ bởi Vietnam Foundation và vận hành trên nền tảng Hanoi Spring. Các tài liệu đều tuân thủ giấy phép Creative Commons Attribution 3.0 trừ khi ghi chú rõ ngoại lệ.
Từ khóa » Toán Tử N Trong Biểu Thức được Hiểu Là
-
Bộ Câu Hỏi Trắc Nghiệm Về Lập Trình Có Giải P11
-
Toán Tử “++n” được Hiểu - Trắc Nghiệm Online
-
Toán Tử “n--“ được Hiểu: - Trắc Nghiệm Online
-
Toán Tử “++n” được Hiểu? | - Cộng đồng Tri Thức & Giáo Dục
-
Toán Tử “n--“ được Hiểu: - .vn
-
Bài 4: Toán Tử Và Biểu Thức Trong C | Tìm ở đây
-
[Tự Học Lập Trình C] Hằng - Biến - Toán Tử - Biểu Thức Trong Ngôn Ngữ ...
-
Toán Tử Trong C - AICurious
-
Toán Tử – Wikipedia Tiếng Việt
-
Thuật Toán – Wikipedia Tiếng Việt
-
Biểu Thức Và Thứ Tự ưu Tiên Của Các Toán Tử Trong Biểu Thức
-
Bài 8 – 10. Toán Tử Trong C - Lập Trình Không Khó
-
Toán Tử Trong C++
-
Giáo Trình Lập Trình Căn Bản: Biến Và Biểu Thức Trong C - VOER
-
Bài 5: Toán Tử Trong C - Học Lập Trình C Cơ Bản - VnCoder
-
Cẩm Nang Bắt đầu Lập Trình C Với Các Toán Tử C Cho Người Mới
-
[PPT] Kiểu Dữ Liệu - CSE
-
Toán Tử Trong Ngôn Ngữ Lập Trình Swift