Toán tử trong C

Khái niệm toán tử trong [Wikipedia]:

Trong toán học, một toán tử (tiếng Anh operator, phân biệt với operation – phép toán) là một hàm, thông thường có một vai trò trọng yếu trong một ngành nghề nào đấy. Ví dụ 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à một hàm ảnh hưở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.

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

  • Toán tử số học
  • Toán tử quan hệ
  • Toán tử logic
  • Toán tử so sánh bit
  • Toán tử gán
  • Toán tử hỗn hợp

Toán tử số học

Giả sử khai báo: int ?=5, Ɓ=6; float C=1.2;

Toán tửMiêu tảVí dụ+Cộng 2 toán hạngA + Ɓ sẽ cho kết quả là 11-Trừ 2 toán hạngA – Ɓ sẽ cho kết quả là -1*Nhân 2 toán hạngA * Ɓ sẽ cho kết quả là 30/Chia 2 toán hạngB / ? sẽ cho kết quả là 0 (2 toán hạng đều là số nguyên thì kết quả là phần nguyên của thương) ? / C sẽ cho kết quả là 4.166667 (1 trong 2 toán hạng là số thực dấu phẩy động thì thương là số thực dấu phẩy động)%Chia lấy phần dưB % ? sẽ cho kết quả là 1

Toán tử so sánh(quan hệ): Trả về giá trị là true (đúng) hoặc false (sai)

int ?=5, Ɓ=6;

  • < (bé hơn) ? < Ɓ -> true
  • <= (bé hơn hoặc bằng) ? <= Ɓ -> true
  • > (to hơn) ? > Ɓ -> false
  • >= (to hơn hoặc bằng) ? >= Ɓ -> false
  • == (bằng) ? == Ɓ -> false
  • != (khác) ? != Ɓ -> true
Xem Thêm  Cách đọc tệp văn bản trong Java - đọc tệp văn bản trong java

Toán tử logic: Trả về giá trị là true (đúng) hoặc false (sai)

Trong ngôn từ C, 2 tình trạng true(đúng) & false(sai) được trình diễn bởi các số nguyên int:

  • Số 0 trình diễn cho tình trạng false (sai).
  • Toàn bộ các số nguyên khác 0 trình diễn cho tình trạng true (đúng).

Các toán tử logic:

  • && (and) trả về true khi cả 2 toán hạng đều đúng. Trái lại trả về false.
    • (5vàlt;6) && (7vàlt;8) -> true
    • (5vàgt;6) && (7vàlt;8) -> false
    • (5vàgt;6) && (7vàgt;8) -> false
  • || (or) trả về true khi tối thiểu một trong 2 toán hạng đúng. Trái lại trả về false.
    • (5vàlt;6) && (7vàlt;8) -> true
    • (5vàgt;6) && (7vàlt;8) -> true
    • (5vàgt;6) && (7vàgt;8) -> false
  • ! (not) trả về true khi toán hạng (đằng sau dấu ! sai). Trái lại trả về false.
    • !(7vàgt;8) -> true
    • !(7vàlt;8) -> false

Toán tử thao tác trên bit

  • & (and bit)
  • | (or bit)
  • ~ (phủ định)
  • >> (dịch bit sang phải)
  • << (dịch bit sang trái)

Toán tử gán

Sử dụng dấu = cho việc gán giá trị vào biến.

Chẳng hạn:

1

int

α

,

ɓ

,

ͼ

;

2

int

main

(

void

)

3

{

4

α

=

5

;

// Gán cho α giá trị là 5

5

ͼ

=

ɓ

=

α

;

// Gán cho ɓ & ͼ giá trị bằng giá trị của α

6

return

;

7

}

Các toán tử gán mở rộng:

Toán tửVí dụTương đương với+=C += ?C = C + ?-=C -= ?C = C - ?*=C *= ?C = C * ?/=C /= ?C = C / ?%=C %= ?C = C % ?<<=C <<= 2C = C << 2>>=C >>= 2C = C >> 2&=C &= 2C = C & 2^=C ^= 2C = C ^ 2|=C |= 2C = C | 2

Toán tử tăng giảm

  • ++ là toán tử tăng
    • ++ι tương tự với ι = ι + 1
  • -- là toán tử giảm
    • --i tương tự với ι = ι - 1
  • Có 2 cách viết ++ι & ι++ nhưng ý nghĩa của chúng khác nhau:
    • ++ι thì ι được tăng sớm muộn đó sẽ lấy kết quả để thực hiện biểu thức
    • ι++ thì ι được mang vào thực hiện biểu thức sớm muộn đó mới tăng ι lên.
Xem Thêm  Mảng trong Java - java xác định một mảng

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

Toán tửMiêu tảVí dụsizeof()Trả lại kích thước của một biếnsizeof(α), với α là integer, thì sẽ trả lại kết quả là 4.&Trả lại địa chỉ của một biến. sẽ cho địa chỉ thực sự của biến α.*Trỏ tới một biến. sẽ trỏ tới biến α.<điều kiệnvàgt;? Ҳ:УBiểu thức điều kiệnNếu điều kiện đúng ? thì trả về giá trị Ҳ : Còn nếu như không thì trả về giá trị У<toán hạng 1vàgt;,<toán hạng 2vàgt;Ước lượng giá trị toán hạng 1, ước lượng giá trị toán hạng 2 & trả về giá trị toán hạng 2 là giá trị cuối cùngt = (Ҳ=10, Ҳ+5) sẽ gán giá trị Ҳ <- 10; thực hiện phép tính Ҳ + 5 = 10 + 5 = 15 & gán giá trị 15 cho t

Bảng thứ tự ưu tiên thực hiện của toán tử (theo thứ tự giảm dần mức độ ưu tiên):

LoạiToán tửThứ tự ưu tiênPostfix() [] -> . ++ - -Trái sang phảiUnary+ - ! ~ ++ - - (type) * & sizeofPhải sang tráiTính nhân* / %Trái sang phảiTính cộng+ -Trái sang phảiDịch chuyển bit<< >>Trái sang phảiSo sánh không ngang bằng< <= > >=Trái sang phảiSo sánh ngang bằng== !=Trái sang phảiPhép AND bit&Trái sang phảiPhép XOR bit^Trái sang phảiPhép OR bit|Trái sang phảiPhép AND logic&&Trái sang phảiPhép OR logic||Trái sang phảiĐiều kiện? :Phải sang tráiGán= += -= *= = %= >>= <<= &= ^= |=Phải sang tráiDấu phảy,Trái sang phải

Xem Thêm  JavaScript Làm tròn đến 2 phương pháp vị trí thập phân: Hướng dẫn cơ bản - javascript chuyển đổi sang số thập phân 2 vị trí

Ép kiểu

Đôi lúc tất cả chúng ta cần chuyển hóa giá trị một biểu thức sang kiểu dữ liệu khác. Chẳng hạn trong trường hợp ta mong muốn thực hiện phép toán chia lấy phần dư của 2 số nguyên, nhưng lại được lưu trong 2 biến kiểu float, ta chẳng thể ứng dụng trực tiếp toán tử % cho 2 biến đó. Bạn chạy chương trình thế này sẽ báo lỗi:

1

#include

<stdio.hvàgt;

2

int

main

(

void

)

3

{

4

int

α

=

5

,

ͼ

;

5

float

ɓ

=

6

;

6

ͼ

=

α

%

(

int

)

ɓ

;

7

printf

(

"%d"

,

ͼ

);

8

return

;

9

}

Chính vì vậy cần ép kiểu theo cú pháp: (<kiểu dữ liệuvàgt;) <biểu thứcvàgt; để lấy giá trị từ biến ɓ, đổi sang số nguyên để thực hiện phép %. Code đúng như sau:

1

#include

<stdio.hvàgt;

2

int

main

(

void

)

3

{

4

int

α

=

5

,

ͼ

;

5

float

ɓ

=

6

;

6

ͼ

=

α

%

(

int

)

ɓ

;

7

printf

(

"%d"

,

ͼ

);

8

return

;

9

}

Viết một bình luận