06/04/2021, 14:47

Các toán tử trong C (số học - gán - quan hệ -...) - Học lập trình C căn bản & nâng cao

Trong bài này chúng ta sẽ tìm hiểu một số toán tử thường gặp trong C như: Toán tử số học, toán tử quan hệ, toán tử logic, và toán tử gán. Nói về toán tử thì hầu như ngôn ngữ lập trình nào cũng có, và ý nghĩa sử dụng cũng giống nhau. Chỉ có điều mỗi ngôn ngữ sẽ có một cú pháp riêng nên có thể cách ...

Trong bài này chúng ta sẽ tìm hiểu một số toán tử thường gặp trong C như: Toán tử số học, toán tử quan hệ, toán tử logic, và toán tử gán.

Nói về toán tử thì hầu như ngôn ngữ lập trình nào cũng có, và ý nghĩa sử dụng cũng giống nhau. Chỉ có điều mỗi ngôn ngữ sẽ có một cú pháp riêng nên có thể cách biểu diễn sẽ khác. Tuy nhiên, hầu hết các ngôn ngữ lập trình hiện nay đều có cú pháp sử dụng các toán tử giống nhau lên đến 90%.

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

Một toán tử số học thực hiện các phép toán như cộng, trừ, nhân, chia, v.v. trên các giá trị số (hằng số và biến).

Những toán tử này tương đối dễ, chỉ có toán từ % là đặc biệt, nó sẽ lấy kết quả là phần dư của phép chia. Ví dụ 4 % 3 = 1 tại vì 4 chia cho 3 sẽ dư 1.

Xem ví dụ dưới đây:

// Working of arithmetic operators
#include <stdio.h>
int main()
{
    int a = 9,b = 4, c;
    
    c = a+b;
    printf("a+b = %d 
",c);
    c = a-b;
    printf("a-b = %d 
",c);
    c = a*b;
    printf("a*b = %d 
",c);
    c = a/b;
    printf("a/b = %d 
",c);
    c = a%b;
    printf("Chia lay du = %d 
",c);
    
    return 0;
}

Kết quả:

a+b = 13
a-b = 5
a*b = 36
a/b = 2
Chia lay du =1

2. Toán tử tăng giảm 1 đơn vị trong C

Trong C cho phép bạn tăng giá trị của biến lên 1 bằng phép ++, giảm xuống 1 đơn vị bằng phép --. Xem ví dụ sau để hiểu rõ hơn nhé.

#include <stdio.h>
int main()
{
    int a = 10, b = 100;
    float c = 10.5, d = 100.5;

    printf("++a = %d 
", ++a);
    printf("--b = %d 
", --b);
    printf("++c = %f 
", ++c);
    printf("--d = %f 
", --d);

    return 0;
}

Kết quả:

++a = 11
--b = 99
++c = 11.500000
++d = 99.500000

Ngoài ra bạn có thể đặt toán tử này phía sau biến cũng được, tức là a-- hoặc a++.

Sự khác nhau giữa hai cách đặt này là như sau:

  • Nếu bạn đặt toán tử ở phía trước thì trình biên dịch sẽ ưu tiên chạy toán tử này trước, tức là giá trị sẽ tăng / giảm trước khi thực hiện các phép khác.
  • Nếu đặt phía sau thì nó sẽ tính các phép toán khác rồi mới tăng / giảm cho biến.

Ví dụ:

int a = 12;
int b;

b = ++a; // b = 13
b = a++; // b = 12

3. Toán tử gán trong C

Toán tử gán dùng để gán / thay đổi giá trị cho biến. Trong C có tổng cộng 6 toán tử gán thường sử dụng nhất, đó là:

Khi bạn sử dụng các toán tử số học kèm với toán tử bằng thì đồng nghĩa với việc ghi tắt ở cột tương đương (trong bảng trên).

Ví dụ:

#include <stdio.h>
int main()
{
    int a = 5, c;

    c = a;      // c is 5
    printf("c = %d
", c);
    c += a;     // c is 10 
    printf("c = %d
", c);
    c -= a;     // c is 5
    printf("c = %d
", c);
    c *= a;     // c is 25
    printf("c = %d
", c);
    c /= a;     // c is 5
    printf("c = %d
", c);
    c %= a;     // c = 0
    printf("c = %d
", c);

    return 0;
}

Kết quả:

c = 5 
c = 10 
c = 5 
c = 25 
c = 5 
c = 0

Đây là những toán tử được sử dụng rất thường xuyên trong lập trình C.

4. Toán tử quan hệ trong C

Toán tử quan hệ dùng để trả về mối quan hệ giữa hai biểu thức hoặc hai toán hạng. Kết quả trả về của nó là TRUE hoặc FALSE.

  • TRUE đồng nghĩa với 1
  • FALSE đồng nghĩa với 0

Đây là toán tử khá quan trọng bởi nó được dùng để kiểm tra tính logic của bài toán, kể cả trong thực tế hay lúc học đều đụng đến nó khá nhiều.

Sau đây là bảng danh sách các toán tử quan hệ trong ngôn ngữ C.

Xem ví dụ sau:

// Working of relational operators
#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10;

    printf("%d == %d is %d 
", a, b, a == b);
    printf("%d == %d is %d 
", a, c, a == c);
    printf("%d > %d is %d 
", a, b, a > b);
    printf("%d > %d is %d 
", a, c, a > c);
    printf("%d < %d is %d 
", a, b, a < b);
    printf("%d < %d is %d 
", a, c, a < c);
    printf("%d != %d is %d 
", a, b, a != b);
    printf("%d != %d is %d 
", a, c, a != c);
    printf("%d >= %d is %d 
", a, b, a >= b);
    printf("%d >= %d is %d 
", a, c, a >= c);
    printf("%d <= %d is %d 
", a, b, a <= b);
    printf("%d <= %d is %d 
", a, c, a <= c);

    return 0;
}

Kết quả:

5 == 5 is 1
5 == 10 is 0
5 > 5 is 0
5 > 10 is 0
5 < 5 is 0
5 < 10 is 1
5 != 5 is 0
5 != 10 is 1
5 >= 5 is 1
5 >= 10 is 0
5 <= 5 is 1
5 <= 10 is 1 

5. Toán tử logic trong C

Biểu thức chứa toán tử logic trả về 0 (FALSE) hoặc 1 (TRUE) tùy thuộc vào kết quả biểu thức là đúng hay sai. Các toán tử logic thường được sử dụng trong việc ra quyết định làm một điều gì đó trong lập trình.

Giả sử ta có A (operator) B, trong đó operator chính là một trong ba toán tử dưới đây.

Xem ví dụ sau.

#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10, result;

    result = (a == b) && (c > b);
    printf("(a == b) && (c > b) is %d 
", result);
    result = (a == b) && (c < b);
    printf("(a == b) && (c < b) is %d 
", result);
    result = (a == b) || (c < b);
    printf("(a == b) || (c < b) is %d 
", result);
    result = (a != b) || (c < b);
    printf("(a != b) || (c < b) is %d 
", result);
    result = !(a != b);
    printf("!(a == b) is %d 
", result);
    result = !(a == b);
    printf("!(a == b) is %d 
", result);

    return 0;
}

Kết quả:

(a == b) && (c > b) is 1 
(a == b) && (c < b) is 0 
(a == b) || (c < b) is 1 
(a != b) || (c < b) is 0 
!(a != b) is 1 
!(a == b) is 0 

Trên là 5 loại toán tử được được sử dụng nhiều nhất khi làm việc với ngôn ngữ lập trình C. Bạn hãy thử chạy các ví dụ, thay giá trị cho các biến để hiểu rõ ý nghĩa của từng toán tử nhé.

Sau khi học xong bài này là ta có thể học những kiến thức cao hơn đó chính là các lệnh rẻ nhánh và vòng lặp. Hẹn gặp lại bạn ở chương kế tiếp nhé.

Hoàng Hải Đăng

24 chủ đề

7226 bài viết

Cùng chủ đề
0