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)

2.5.1 Biểu thức

Biểu thức là một sự kết hợp giữa các phép tốn và các tốn hạng để diễn đạt một cơng thức tố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 tố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ố học Các phép tố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 tố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ố ngun; số ngun đó là phần ngun của thương số), ví dụ:

11/3 = 3

Phép tốn % cho phần dư của phép chia ngun, nó khơng áp dụng được cho các giá trị kiểu float và double. Ví dụ:

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

Các phép tốn + và - có cùng số ưu tiên, và nhỏ hơn số ưu tiên của * / và %. Ba phép tố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 tốn số học được thực hiện từ trái sang phải.

Các phép tốn số học dùng để viết các cơng thức tố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 tố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 tố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ể ngun 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 tốn so sánh và logic ñược dùng ñể thiết lập ñiều kiện rẽ nhánh trong tốn tử if và điều kiện kết thúc chu trình trong các tố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 Chuyển kiểu

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 giảm

C đưa ra hai phép tố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 tốn hạng của nó, tố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 tốn ++ và -- có thể đứng trước hoặc sau tố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 tố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 Biểu thức ñiều kiện

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 lệnh gán và biểu thức 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 tố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.

Một số dạng khác của 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 tốn> = <biểu thức>;

Trong đó <phép tốn> là một phép tố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 tố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 tố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 tốn được trình bày trong bảng sau.

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

STT Phép tố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 ? : Phải qua trái

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

11 , Trái qua phải

Giải thích:

- Các phép tốn trên một dịng có cùng thứ tự ưu tiên, các phép tố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 tố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)