Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Các loại toán tử và biểu thức trong ngôn ngữ C


Toán tử thực hiện thao tác trên dữ liệu. Chúng được phân loại như sau:

  • Toán tử số học.
  • Toán tử quan hệ.
  • Toán tử logic.
  • Toán tử gán.
  • Toán tử tăng/giảm.
  • Toán tử thao tác bit.
  • Toán tử điều kiện.
  • Toán tử đặc biệt.

Toán tử số học

Các toán tử này dùng cho tính toán số học hoặc thực hiện các phép toán như cộng, trừ, v.v.

Toán tử Mô tả Ví dụ a=20, b=10 Kết quả
+Cộnga+b20+1030
-Trừa-b20-1010
*Nhâna*b20*10200
/Chiaa/b20/102 (thương)
%Chia lấy dưa%b20%100 (dư)

Chương trình minh họa

Chương trình C sau đây minh họa các toán tử số học:

#include <stdio.h>
int main() {
    int a = 20, b = 10;
    printf("%d ", a+b);
    printf("%d ", a-b);
    printf("%d ", a*b);
    printf("%d ", a/b);
    printf("%d ", a%b);
    return 0;
}

Kết quả

Khi chạy chương trình trên, kết quả như sau:

30 10 200 2 0

Toán tử quan hệ

Dùng để so sánh hai biểu thức.

Toán tử Mô tả Ví dụ a=10, b=20 Kết quả
<Nhỏ hơna<b10<201 (đúng)
<=Nhỏ hơn hoặc bằnga<=b10<=201
>Lớn hơna>b10>200 (sai)
>=Lớn hơn hoặc bằnga>=b10>=200
==Bằnga==b10==200
!=Kháca!=b10!=201

Kết quả của biểu thức quan hệ là true (1) hoặc false (0).

Chương trình minh họa

#include <stdio.h>
int main() {
    int a = 10, b = 20;
    printf("%d ", a<b);
    printf("%d ", a<=b);
    printf("%d ", a>b);
    printf("%d ", a>=b);
    printf("%d ", a==b);
    printf("%d ", a!=b);
    return 0;
}

Kết quả

1 1 0 0 0 1

Toán tử logic

Dùng để kết hợp hai hoặc nhiều biểu thức một cách logic. Bao gồm: AND (&&), OR (||), NOT (!).

Bảng chân lý AND (&&)

exp1exp2exp1 && exp2
ĐúngĐúngĐúng
ĐúngSaiSai
SaiĐúngSai
SaiSaiSai

Bảng chân lý OR (||)

exp1exp2exp1 || exp2
ĐúngĐúngĐúng
ĐúngSaiĐúng
SaiĐúngĐúng
SaiSaiSai

Bảng chân lý NOT (!)

exp!exp
ĐúngSai
SaiĐúng

Ví dụ với giá trị

Toán tửMô tảVí dụa=10,b=20,c=30Kết quả
&&AND logic(a>b)&&(a<c)(10>20)&&(10<30)0
||OR logic(a>b)||(a<=c)(10>20)||(10<30)1
!NOT logic!(a>b)!(10>20)1

Chương trình minh họa

#include <stdio.h>
int main() {
    int a = 10, b = 20, c = 30;
    printf("%d ", (a>b) && (a<c));
    printf("%d ", (a>b) || (a<c));
    printf("%d ", !(a>b));
    return 0;
}

Kết quả

0 1 1

Toán tử gán

Gán giá trị cho biến. Các loại:

  • Gán đơn giản (=).
  • Gán kết hợp (+=, -=, *=, /=, %=).
Toán tửMô tảVí dụ
=Gán đơn giảna=10
+=, -=, *=, /=, %=Gán kết hợpa+=10 <=> a=a+10
a-=10 <=> a=a-10

Chương trình minh họa

#include <stdio.h>
int main() {
    int a = 10;
    printf("%d ", a);
    a += 10;
    printf("%d ", a);
    return 0;
}

Kết quả

10 20

Toán tử tăng/giảm

Toán tử tăng (++)

Tăng giá trị biến lên 1. Hai dạng:

  • Tiền tố (++a): tăng trước, dùng sau.
  • Hậu tố (a++): dùng trước, tăng sau.

Ví dụ:

z = ++a; // a = a+1; z = a
z = a++; // z = a; a = a+1

Chương trình minh họa

Tiền tốHậu tố
int main() {
    int a=10, z;
    z = ++a;
    printf("z=%d", z);
    printf("a=%d", a);
    return 0;
}
int main() {
    int a=10, z;
    z = a++;
    printf("z=%d", z);
    printf("a=%d", a);
    return 0;
}
Kết quả:
z=11 a=11
Kết quả:
z=10 a=11

Toán tử giảm (--)

Giảm giá trị biến đi 1. Hai dạng:

  • Tiền tố (--a): giảm trước, dùng sau.
  • Hậu tố (a--): dùng trước, giảm sau.

Ví dụ:

z = --a; // a = a-1; z = a
z = a--; // z = a; a = a-1

Chương trình minh họa

Tiền tốHậu tố
int main() {
    int a=10, z;
    z = --a;
    printf("z=%d", z);
    printf("a=%d", a);
    return 0;
}
int main() {
    int a=10, z;
    z = a--;
    printf("z=%d", z);
    printf("a=%d", a);
    return 0;
}
Kết quả:
z=9 a=9
Kết quả:
z=10 a=9

Toán tử thao tác bit

Thao tác trực tiếp trên các bit.

Toán tửMô tả
&AND bit
|OR bit
^XOR bit
<<Dịch trái
>>Dịch phải
~Phép bổ sung 1 (One's Complement)

Bảng chân lý AND bit

aba&b
000
010
100
111

Bảng chân lý OR bit

aba|b
000
011
101
111

Bảng chân lý XOR bit

aba^b
000
011
101
110

Chương trình minh họa (AND, OR, XOR)

#include <stdio.h>
int main() {
    int a = 12, b = 10; // 12 = 1100, 10 = 1010
    printf("%d ", a & b); // 1000 = 8
    printf("%d ", a | b); // 1110 = 14
    printf("%d ", a ^ b); // 0110 = 6
    return 0;
}

Kết quả

8 14 6

Dịch trái (<<)

Dịch trái 1 lần nhân đôi giá trị. Ví dụ: a=10, a<<1 = 20.

Dịch phải (>>)

Dịch phải 1 lần giảm giá trị đi một nửa. Ví dụ: a=10, a>>1 = 5.

Phép bổ sung 1 (~)

Đảo ngược tất cả bit (0 thành 1, 1 thành 0). Ví dụ: a=5 (0101), ~a = 1010 (10) nếu dùng 4 bit. Với số có dấu, ~a = -(a+1).

Chương trình minh họa (dịch bit, phép bổ sung)

#include <stdio.h>
int main() {
    int a = 20, b = 10, c = 10;
    printf("%d ", a << 1); // 40
    printf("%d ", b >> 1); // 5
    printf("%d ", ~c);     // -11 (bổ sung 2)
    return 0;
}

Kết quả

40 5 -11

Toán tử điều kiện (? :)

Còn gọi là toán tử ba ngôi.

Cú pháp: biểu_thức1 ? biểu_thức2 : biểu_thức3

Nếu biểu_thức1 đúng thì thực hiện biểu_thức2, ngược lại biểu_thức3. Tương đương:

if (biểu_thức1) biểu_thức2; else biểu_thức3;

Chương trình minh họa

#include <stdio.h>
int main() {
    int z = (5 > 3) ? 1 : 0;
    printf("%d", z);
    return 0;
}

Kết quả

1

Toán tử đặc biệt

  • Dấu phẩy (,) – Phân tách biến. VD: a=10, b=20
  • Toán tử lấy địa chỉ (&) – Lấy địa chỉ biến.
  • Toán tử sizeof() – Lấy kích thước kiểu dữ liệu/biến (byte).

Chương trình minh họa

#include <stdio.h>
int main() {
    int a = 10;
    float b = 20;
    printf("a=%d b=%f ", a, b);
    printf("Địa chỉ a =%p\n", (void*)&a);
    printf("Địa chỉ b =%p\n", (void*)&b);
    printf("Kích thước a = %zu byte\n", sizeof(a));
    printf("Kích thước b = %zu byte", sizeof(b));
    return 0;
}

Kết quả

a=10 b=20.000000
Địa chỉ a =0x7ffc...
Địa chỉ b =0x7ffc...
Kích thước a = 4 byte
Kích thước b = 4 byte