toán tử trong c là gì và cách phân loại

Toán tử trong C là gì? Đây là câu hỏi được rất nhiều người quan tâm. Khi nhắc đến các phép toán, người ta thường sẽ hay hình dung đến các phép như cộng, trừ, nhân, chia, … Đây cũng chính là những biểu thức tính toán. Nói cách khác, biểu thức là sự kết hợp giữa các toán hạng và các toán tử, và thường diễn ra trong lập trình. Vậy toán tử trong C là gì? Toán tử trong C có những loại nào? Hãy cùng DINHNGHIA.VN tìm hiểu nhé!

Toán tử trong C là gì?

Trong toán học, một toán tử (operator) là một hàm, thông thường sẽ đóng vai trò quan trọng trong một lĩnh vực nào đấy. Ví dụ như trong đại số tuyến tính có “toán tử tuyến tính” (linear operator), trong giải tích có “toán tử vi phân” (differential operator),… Thông thường, một toán tử là hàm tác động lên các hàm khác, hoặc nó có thể là tổng quát hóa của một hàm, như trong đại số tuyến tính.

toán tử trong c là gì và cách phân loại

Các kiểu toán tử trong C

Toán tử số học trong C

Bảng mô tả các toán tử số học được hỗ trợ bởi ngôn ngữ C. 

Giả sử biến \(A=12, B=24\), khai báo \(int A=12, B=24\)

STT

Toán tử Tên/ Miêu tả Ví dụ

Kết quả

1

\(+\) Cộng 2 toán hạng \(A+B\) \(36\)

2

\(–\) Trừ 2 toán hạng \(A-B\) \(-12\)

3

\(*\) Nhân 2 toán hạng \(A*B\) \(288\)

4

\(/\) Chia 2 toán hạng \(B/A\) \(2\)

5

\(%\) Chia lấy phần dư \(B%A\) \(0\)

6

\(++\) Lượng tăng giá trị toán hạng thêm 1 đơn vị \(A++\) \(13\)

7

\(—\) Lượng giảm giá trị toán hạng thêm 1 đơn vị \(A-\) \(11\)

Toán tử chia lấy phần dư (%) yêu cầu cả hai toán hạng đều là số nguyên. Kết quả trả về phần dư còn lại của phép chia. Ví dụ:\((7%5)\) được tính toán bằng cách chia số nguyên 7 cho 5 để được 1 và phần dư là 2, do đó kết quả là 2.

Thông thường, nếu cả hai toán hạng là số nguyên thì kết quả sẽ là một số nguyên. Tuy nhiên, trong một số trường hợp khác, khi một hoặc cả hai toán hạng là số thực thì sau đó kết quả sẽ là một số thực.

Khi cả hai toán hạng của toán tử chia đều là số nguyên thì phép chia được thực hiện như một phép chia số nguyên và không phải là phép chia thông thường mà chúng ta sử dụng. Phép chia số nguyên luôn cho kết quả là phần nguyên của thương. Ví dụ: \(7/5=1\), không phải \(= 1.4\).

Toán tử quan hệ trong C

Các toán tử quan hệ được sử dụng kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng các toán tử quan hệ là những giá trị Boolean (logic “true” hoặc “false”). Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.

Ta sử dụng các toán tử này để so sánh các giá trị, các ký tự,… tuy nhiên không dùng để so sánh các xâu với nhau vì điều này sẽ dẫn đến các địa chỉ của chuỗi được so sánh chứ không phải là nội dung chuỗi được so sánh. Khi so sánh các ký tự với nhau thì bản chất có thể hiểu là máy so sánh các mã ASCII của các ký tự với nhau. VD. ‘A’ >’B’ sẽ trả về giá trị 0 vì ‘A’ có mã ASCII là 65 còn ‘B’ là 66.

Bảng mô tả các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C

Int \(A=3, B=4\)

Toán tử

Tên/ Miêu tả Ví dụ

Kết quả

\(<\) So sánh nhỏ hơn \((A < B)\) True
\(<=\) So sánh nhỏ hơn hoặc bằng \((A <=B)\) True
\(>\) So sánh lớn hơn \((A >B)\) False
\(>=\) So sánh lớn hơn hoặc bằng \((A >=B)\) False
\(==\) So sánh bằng \((A ==B)\) False
\(!=\) So sánh khác \((A!=B)\) True

Toán tử logic trong C

C cung cấp 3 toán tử logic dùng cho việc kết nối các biểu thức logic. 

Trong ngôn ngữ C, 2 trạng thái true(đúng) và false(sai) được biểu diễn bởi các số nguyên int:

  • Số 0 biểu diễn cho trạng thái false (sai).
  • Tất cả các số nguyên khác 0 biểu diễn cho trạng thái true (đúng), thường dùng số 1.
Toán tử

Tên

Ví dụ

Kết quả

\(&&\) và (and),  trả về True khi cả 2 toán hạng đều đúng. Ngược lại sẽ trả về false 5 > 2 && 5 > 3

5>8 && 9<5

True (1)

False (0)

\(\left | \right |\) hoặc (or),  trả về True khi ít nhất một trong 2 toán hạng đúng. Ngược lại sẽ trả về false (5<6) && (9<10) –

(5>6) && (9>10) 

True

False

\(!\) phủ định (not),  trả về True khi toán hạng (đằng sau dấu ! sai). Ngược lại trả về false !(9>10) 

!(9<10)

True 

False

Toán tử bit trong C

Các toán tử dạng bit cho phép chúng ta thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên thủy. Giả sử A=60 (=0011 1100),  B=13 (= 0000 1101)

Toán tử

Tên/ Miêu tả

Minh họa

| OR (hoặc) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong một hoặc hai toán hạng (A | B), kết quả là 61 ( 0011 1101)
& AND (và) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong cả hai toán hạng (A & B), kết quả là 12 (0000 1100)
~ đảo bit (đảo bit 1 thành bit 0 và ngược lại) (~A ) kết quả là -61( 1100 0011)
<< dịch bit sang trái A << 2 sẽ cho kết quả 240, tức là 1111 0000 (dịch sang trái hai bit)
>> dịch bit sang phải A >> 2:  kết quả 15, (0000 1111) (dịch sang phải hai bit)

Toán tử gán trong C

Toán tử gán được dùng để lưu trữ giá trị cho 1 biến nào đó. Ta sử dụng dấu = cho việc gán giá trị vào biến. Có thể gán nhiều giá trị cho nhiều biến cùng một lúc.

Toán tử

Tên/ Miêu tả

Ví dụ

Tương đương với

= Toán tử gán đơn giản (Gán giá trị toán hạng phải cho toán hạng trái) C = A + B  gán giá trị của A + B vào trong C
+= Thêm giá trị toán hạng phải sang toán hạng trái và gán giá trị đó cho toán hạng trái. C += A  C = C + A
-= Trừ đi giá trị toán hạng phải từ toán hạng trái, sau đó gán giá trị này cho toán hạng trái. C -= A  C = C – A
*= Nhân giá trị toán hạng phải với toán hạng trái và gán giá trị này cho toán hạng trái. C *= A C = C * A
/= Chia toán hạng trái cho toán hạng phải và gán giá trị này cho toán hạng trái C /= A C = C / A
%= Lấy phần dư của phép chia toán hạng trái cho toán hạng phải và gán cho toán hạng trái. C %= A C = C % A
<<= Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. C <<= 2 C = C << 2
>>= Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. C >>= 2 C = C >> 2
&= AND bit C &= 2 C = C & 2
^= OR loại trừ bit C ^= 2 C = C ^ 2
|= OR bit C |= 2 C = C | 2

Toán tử hỗn hợp trong C

Có một số toán tử hỗn hợp quan trọng là sizeof? : được hỗ trợ bởi ngôn ngữ C.

Toán tử

Tên/ Miêu tả

Ví dụ

 sizeof() Trả lại kích cỡ của một biến sizeof(a), với a là integer, thì sẽ trả lại kết quả là 4.

&

Trả lại địa chỉ của một biến &a; sẽ cho địa chỉ thực sự của biến a.

*

Trỏ tới một biến *a; sẽ trỏ tới biến a.
      , Toán tử Comma trong C++ làm cho một dãy hoạt động được thực hiện. Giá trị của biểu thức comma là giá trị của biểu thức cuối cùng trong danh sách được phân biệt bởi dấu phẩy
  Cast Ví dụ: int(2.2000) sẽ trả về 2 Toán tử ép kiểu (Casting) trong C++ biến đổi một kiểu dữ liệu thành kiểu khác.
    ? Biểu thức điều kiện Nếu điều kiện là true ? thì giá trị X : Nếu không thì giá trị Y

Một số toán tử khác

Toán tử tăng giảm

  • ++ là toán tử tăng
    • ++i tương đương với i = i + 1
  • — là toán tử giảm
    • –i tương đương với i = i – 1
  • Có 2 cách viết ++i và i++ tuy nhiên, ý nghĩa của chúng khác nhau:
    • ++i: i được tăng trước sau đó sẽ lấy kết quả để thực hiện biểu thức.
    • i++:  i được đưa vào thực hiện biểu thức trước sau đó mới tăng i lên.

Toán tử phẩy

Nhiều biểu thức có thể được kết nối trở thành cùng một biểu thức sử dụng toán tử phẩy. Toán tử phẩy yêu cầu 2 toán hạng. Nó ước lượng toán hạng trái trước, sau đó là toán hạng phải, và trả về giá trị của toán hạng phải như là kết quả cuối cùng.

Thứ tự ưu tiên các toán tử trong C

Loại 

Toán tử

Thứ tự ưu tiên

Postfix 

() -> . ++ – –  

Trái sang phải 

Unary 

+ – ! ~ ++ – – (type)* & sizeof 

Phải sang trái 

Tính nhân 

* / % 

Trái sang phải 

Tính cộng 

+ – 

Trái sang phải 

Dịch chuyển 

<< >> 

Trái sang phải 

Quan hệ 

< <= > >= 

Trái sang phải 

Cân bằng 

== != 

Trái sang phải 

Phép AND bit 

Trái sang phải 

Phép XOR bit 

Trái sang phải 

Phép OR bit 

Trái sang phải 

Phép AND logic 

&& 

Trái sang phải 

Phép OR logic 

|| 

Trái sang phải 

Điều kiện 

?: 

Phải sang trái 

Gán 

= += -= *= /= %=>>= <<= &= ^= |= 

Phải sang trái 

Dấu phẩy

Trái sang phải 

Trên đây là tổng hợp kiến thức liên quan đến toán tử trong C. Hy vọng bài viết đã cung cấp cho bạn những kiến thức hữu ích phục vụ cho quá trình nghiên cứu và học tập. Nếu có bất cứ câu hỏi nào liên quan đến chủ đề toán tử trong c, mời bạn để lại nhận xét để DINHNGHIA.VN hỗ trợ giải đáp nhé!

Please follow and like us:
 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *