Toán tử so sánh trong C và các phép so sánh chuỗi, số | Laptrinhcanban.com

Toán tử so sánh trong C và các phép so sánh chuỗi, số

Hướng dẫn cách sử dụng toán tử so sánh trong C. Bạn sẽ học được các phép so sánh trong C được biểu diễn thông qua các toán tử so sánh trong C và ứng dụng chúng để so sánh 2 số trong Cso sánh 2 chuỗi trong C sau bài học này.

Bảng toán tử so sánh trong C

Để thực hiện các phép so sánh trong C, chúng ta sử dụng các toán tử so sánh trong C được liệt kê trong bảng dưới đây:

Toán tửBiểu thức điều kiệnÝ nghĩa
==x == yx và y bằng nhau
!=x != yx và y không bằng nhau
>x > yx lớn hơn y
<x < yx nhỏ hơn y
>=x >= yx bằng hoặc lớn hơn y
<=x <= yx bằng hoặc nhỏ hơn y

Phép so sánh trong C sẽ kết hợp toán tử so sánh cùng với hai giá trị ở hai vế trái phải thành một biểu thức điều kiện, sau đó kiểm tra biểu thức điều kiện này là đúng hay sai và đưa ra kết quả. Kết quả của các phép so sánh trong C sẽ là kiểu boolean trong C với hai giá trị là True (đúng) hoặc False (sai), và phép toán so sánh trong C được sử dụng để cấu tạo biểu thức điều kiện được sử dụng trong câu lệnh if trong C.

Toán tử so sánh trong C

So sánh bằng trong C

Để so sánh hai giá trị có bằng nhau hay không, chúng ta sử dụng toán tử so sánh bằng trong C == hoặc là toán tử so sánh khác trong C !=.

Nếu hai giá trị bằng nhau, toán tử so sánh bằng trong C == trả về True và ngược lại nếu hai giá trị không bằng nhau, toán tử so sánh khác trong C != sẽ trả về True.
Chúng ta hãy cùng xem một số ví dụ cụ thể sử dụng phép so sánh bằng trong C sau đây:

So sánh 2 số trong C

Khi sử dụng phép so sánh bằng để so sánh hai số trong C, không những chúng ta có thể so sánh giữa số nguyên với số nguyên, số thực với số thực, mà còn có thể so sánh các số có kiểu dữ liệu khác nhau như số nguyên với số thực v.v..
Ví dụ:

1 == 1
//> true

1 == 2
//> False

1 == 1.0
//> True

1 != 2
//> True

1 != 1
//> False

So sánh 2 chuỗi trong C

Khi sử dụng phép so sánh bằng để so sánh chuỗi C, chúng ta kiểm tra giá trị của chúng có bằng nhau hay không. Lưu ý là khi so sánh chuỗi trong C, chúng ta cần phân biệt giữa chữ hoa và chữ thường. Ví dụ:

"Hello" == "Hello"
//> True

"Hello" == "hello"
//> False

"Hello" == "Hey"
//> False

"Hello" != "Hello"
//> False

"Hello" != "hello"
//> True

Phép so sánh lớn nhỏ trong C

Để so sánh lớn nhỏ trong C, chúng ta sử dụng các toán tử <, >, >=<=.
Toán tử < cho kết quả là True nếu giá trị bên trái nhỏ hơn giá trị bên phải và ngược lại, toán tử > cho kết quả là True nếu giá trị bên trái lớn hơn giá trị bên phải.
Tương tự, toán tử <= cho kết quả là True nếu giá trị bên trái nhỏ hơn hoặc bằng giá trị bên phải và ngược lại, toán tử >= cho kết quả là True nếu giá trị bên trái lớn hơn hoặc bằng giá trị bên phải.

Chúng ta hãy cùng xem một số ví dụ cụ thể sử dụng phép so sánh lớn nhỏ trong C sau đây:

So sánh lớn nhỏ giữa 2 số trong C

Khi sử dụng phép so sánh lớn nhỏ để so sánh 2 số trong C, chúng ta kiểm tra giá trị của chúng lớn hơn hay nhỏ hơn.

5 > 3
//> True

7 < 3
//> False

4.2 >= 3.1
// True

Lưu ý là chúng ta không thể sử dụng phép so sánh lớn nhỏ để so sánh 2 số phức trong C.

printf((5 + 2j) > (3 + 4j))

Lỗi sau đây sẽ xảy ra:

Main.c:4:16: error: invalid operands to binary expression ('_Complex int' and '_Complex int')
if((5 + 2j) > (3 + 4j))

So sánh lớn nhỏ trong chuỗi C

Khi sử dụng phép so sánh lớn nhỏ để so sánh chuỗi C, thay vì so sánh trực tiếp giá trị của hai chuỗi, chúng ta sẽ so sánh mã ký tự ASSCII giữa chúng.
Để lấy mã ASSCII của một ký tự bất kỳ, chúng ta sử dụng hàm printf() với định dạng format là %d (trong trường hợp muốn lấy mã ASSCII dưới dạng thập phân) như sau:

printf("Mã ascii của a:%d\n", 'a'); //97
printf("Mã ascii của A:%d\n", 'A'); //65
printf("Mã ascii của b:%d\n", 'b'); //98

Khi so sánh lớn nhỏ hai ký tự đơn, chúng ta đơn giản so sánh mã ký tự ASSCII của chúng. Ví dụ, do mã ký tự ASSCII của ký tự a là 97 sẽ lớn hơn của ký tự A là 65 nên phép so sánh sau sẽ cho ra kết quả True.

#include <stdio.h>

int main(void){
printf("Mã ascii của a:%d\n", 'a');
printf("Mã ascii của A:%d\n", 'A');

if ( 'a' > 'A')
printf("a > A");
return 0;
}
//>Mã ascii của a:97
//Mã ascii của A:65
//a > A

Tuy nhiên khi so sánh 2 chuỗi ký tự với nhau, chúng ta không thể đơn thuần so sánh các mã ký tự ASSCII của từng ký tự được. Lúc này, phép so sánh sẽ bắt đầu từ ký tự đầu tiên trong hai chuỗi, và nếu chúng giống nhau, các ký tự tiếp theo được so sánh cho tới khi xuất hiện một ký tự khác nhau đầu tiên trong hai chuỗi. Khi đó, mã ký tự ASSCII của ký tự này sẽ đại diện cho cả chuỗi và được dùng để so sánh lớn nhỏ.

Để làm được việc này thì thay vì sử dụng toán tử so sánh thì chúng ta sẽ sử dụng tới một phương pháp khác đó là hàm strcmp() trong C. Hàm này có tác dụng so sánh mã ASSCII của ký tự khác nhau đầu tiên giữa 2 chuỗi và đưa ra hiệu giữa chúng. Bằng cách so sánh hiệu mã ASSCII này với số 0 mà chúng ta có thể so sánh lớn nhỏ giữa 2 chuỗi này.

Chi tiết về hàm strcmp() cũng như cách so sánh chuỗi ký tư trong C xin hãy xem ở bài dưới đây:

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách sử dụng các phép so sánh trong C được biểu diễn thông qua các toán tử so sánh trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.