Các phép toán trên các kiểu

Một phần của tài liệu Giáo trình tin học đại cương (Trang 48 - 52)

CHƯƠNG 2 CÁC KIỂU DỮ LIỆU

2.5 Các phép toán trên các kiểu

2.5.1 Biu thc

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 ủú. Khi viết biểu thức cú thể và nờn dựng cỏc dấu ngoặc trũn ủể thể hiện ủỳng trỡnh tự tớnh toỏn trong biểu thức. Mỗi biểu thức sẽ cú một giỏ trị. Hằng, biến, phần tử mảng và hàm cũng ủược xem là biểu thức. Trong C ủưa ra nhiều quan niệm mới về biểu thức như 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 khụng) và sai (giỏ trị bằng 0).

2.5.2 Phép toán s hc

Các phép toán hai ngôi số học là:

Phép toán Ý nghĩa Ví d

+ Cộng a + b

- Trừ a - b

* Nhân a * b

/ Chia a / b

% Lấy phần dư a % b

Có phép toán một ngôi - ví dụ -(a+b) nhưng không có phép +.

Phép chia hai số nguyên sẽ chặt cắt phần thập phân (kết quả của phép chia 2 số nguyên là một số nguyờn; số nguyờn ủú là phần nguyờn của thương số), vớ dụ:

11/3 = 3

Phộp toỏn % cho phần dư của phộp chia nguyờn, nú khụng ỏp dụng ủược cho cỏc giỏ trị kiểu float và double. Ví dụ:

11%3 = 2

http://www.ebook.edu.vn 49

Các phép toán + và - có cùng số ưu tiên, và nhỏ hơn số ưu tiên của * / và %. Ba phép toỏn này lại cú số 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.

Cỏc phộp toỏn số học dựng ủể viết cỏc cụng thức toỏn học, vớ dụ:

(a*a-b*b)/(x*x+y*y)

2.5.3 Các phép toán so sánh

Phộp toỏn so sỏnh cho ta hoặc giỏ trị 1 (ủỳng) hoặc giỏ trị 0 (sai). 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, trong trường hợp trỏi lại, ta nhận ủược giỏ trị 0.

Các phép toán so sánh cho trong bảng sau:

Phép toán ý nghĩa Ví d

> Có lớn hơn không ? a>b

3>7 có giá trị 0

>= Có lớn hơn hay a>=b

bằng không ? 8>=8 có giá trị 1

< Có nhỏ hơn không? a<b

9<9 có giá trị 0

<= Có nhỏ hơn hay a<=b

bằng không ? 3<=10 có giá trị 1

== Có bằng nhau không? a==b

3==9 có giá trị 0

!= Có khác nhau không a!=b

3!=9 có giá trị 1

Bốn phộp ủầ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ự ưu tiờn của bốn phộp ủầu.

Các phép so sánh có số ư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).

Núi chung, nờn dựng cỏc dấu ngoặc ủể trỏnh những lỗi do ủộ ưu tiờn phộp toỏn gõy nờn.

2.5.4 Phép toán logic

Cũng giống như cỏc phộp toỏn so sỏnh, cỏc phộp toỏn logic cho ta giỏ trị 1 (ủỳng) hoặc giá trị 0 (sai).Trong C sử dụng ba phép toán logic:

- Phộp Phủ ủịnh ! - Phép Và (AND) &&

- Phép Hoặc (OR) ||

í nghĩa của chỳng ủược cho trong cỏc bảng:

a !a

Khác không 0 Bằng không 1

a b a&&b a||b Khác không Khác không 1 1 Khác không Bằng không 0 1 Bằng không Khác không 0 1 Bằng không Bằng không 0 0

http://www.ebook.edu.vn 50

Trong ủú a và b cú thể nguyờn hay thực.

Ví dụ:

3>7 có giá trị 0 7>3 có giá trị 1 3 && 7 có giá trị 1

! 15.6 có giá trị 0

Cỏc phộp toỏn so sỏnh và logic ủược dựng ủể thiết lập ủiều kiện rẽ nhỏnh trong toỏn tử if và ủiều kiện kết thỳc chu trỡnh trong cỏc toỏn tử for, while và do while. Ở chương 3 sẽ cú rất nhiều ví dụ về việc sử dụng các phép toán này

2.5.5 Chuyn kiu

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 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 kia. ð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 (chương 4), trong câu lệnh return (chương 4).

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 ép kiểu:

(<Kiểu dữ liệu>) (<biểu thức>)

Ví dụ:

(float)(a+b)

2.5.6 Các phép toán tăng gim

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 ++ sẽ cộng 1 vào toỏn hạng của nú, toỏn tử giảm -- sẽ trừ ủi 1. Chẳng hạn nếu n ủang cú giỏ trị bằng 5 thì:

Sau phép tính ++n, n có giá trị 6 Sau phép tính --n, n có giá trị 4

Dấu phộp toỏn ++ và -- cú thể ủứng trước hoặc sau toỏn hạng, như vậy cú thể viết:

++n n++ --n n--

Sự khỏc nhau của ++n và n++ ở chỗ: Trong phộp n++ thỡ n 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 nú ủược sử dụng. Sự khỏc nhau giữa --n và n-- cũng như vậy.

Ví d: Nếu n bằng 5 thì câu lệnh x = n++;

sẽ gán 5 cho x, còn câu lệnh x = ++n;

sẽ gỏn 6 cho x. Trong cả hai trường hợp n ủều trở thành 6.

Việc chọn phương án này hay phương án khác là tùy thuộc ngữ cảnh. Phép toán tăng giảm thường ủược sử dụng trong cỏc toỏn tử for, while,... ủể tăng hay giảm giỏ trị cho cỏc biến ủiều khiển. Rất nhiều vớ dụ như vậy cú thể tỡm thấy trong cỏc chương sau.

http://www.ebook.edu.vn 51

Cuối cựng, một ủiều cần lưu ý là khụng nờn sử dụng toỏn tử tăng giảm quỏ tựy tiện trong cỏc biểu thức, vỡ việc ủú cú thể dẫn ủến cỏc kết quả sai.

2.5.7 Biu thc iu kin

Biểu thức ủiều kiện là biểu thức cú dạng:

<biểu thức kiểm tra> ? <biểu thức 1> : <biểu thức 2>

Giỏ trị của biểu thức ủiều kiện bằng giỏ trị của biểu thức 1 nếu biểu thức kiểm tra ủỳng (khác không) và bằng giá trị của biểu thức 2 nếu biểu thức kiểm tra sai (bằng không).

Ví dụ:

printf("\n %8.2f", a < b ? a : b);

ủưa ra giỏ trị nhỏ nhất của hai biến thực a và b.

2.5.8 Câu lnh gán và biu thc gán Biểu thức gán là biểu thức có dạng:

<biến> = <biểu thức>

Vế trái của biểu thức là một biến (hay phần tử mảng), vế phải là một biểu thức. Giá trị của biểu thức gỏn là giỏ trị ủược gỏn. Nếu ủặt dấu ; vào sau biểu thức gỏn thỡ ta ủược lệnh gán:

<biến> = <biểu thức>;

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ụ, khi 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.

Mt s dng khác ca toán t gán.

Trong trường hợp các biểu thức gán có dạng như:

i = i+2;

trong ủú vế trỏi ủược lặp lại cú thể viết gọn hơn như sau:

i += 2;

Các biểu thức gán này có dạng:

<biến> <phép toán> = <biểu thức>;

Trong ủú <phộp toỏn> là một phộp toỏn hai ngụi.

Ví dụ câu lệnh:

x = x*(y+3);

có thể viết thành:

x *= y+3;

2.5.9 Th t ưu tiên các phép toán

Cỏc phộp toỏn cú ủộ ưu tiờn khỏc nhau, ủiều này cú nghĩa là trong cựng một biểu thứ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.

http://www.ebook.edu.vn 52

STT Phép toán Trình t kết hp

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 ? : Phải qua trái

10 = += -= *= /= %= <<= >>= &= ^= |= Phải qua trái

11 , Trái qua phải

Gii thích:

- Các phép toán trên một dòng có cùng thứ tự ưu tiên, các phép toán ở hàng trên có số ưu tiên cao hơn các phép toán ở hàng dưới.

- ðối với các phép toán cùng mức ưu tiên thì trình tự tính toán có thể từ trái qua phải hay ngược lại. ðiều này chỉ ra trong cột "Trình tự kết hợp".

- ðể viết biểu thức một cỏch chớnh xỏc nờn sử dụng cỏc dấu ngoặc trũn (ngoặc ủơn).

Một phần của tài liệu Giáo trình tin học đại cương (Trang 48 - 52)

Tải bản đầy đủ (PDF)

(96 trang)