Ép kiểu trong C, C++ là gì? cách ép kiểu trong C, C++ đơn giản

Khi làm việc trong ngôn ngữ C/C++ trên máy tính, trong một số trường hợp tính toán cụ thể hoặc cần biểu diễn giá trị dưới những định dạng khác nhau, chúng ta cần thực hiện ép kiểu (casting) để chuyển đổi qua lại những kiểu dữ liệu có khả năng lưu trữ giá trị giống nhau. Bài viết này sẽ hướng dẫn bạn thực hiện ép kiểu trong C/C++.

Ép kiểu là gì?

Khái niệm ép kiểu

Ép kiểu là hành động thay đổi kiểu dữ liệu của một biến (hoặc biểu thức) bất kỳ sang một kiểu dữ liệu khác.

Ví dụ:  

  • x=12.3456 (x là số thực, x ∈ R) và bạn muốn ép kiểu x thành một số nguyên (x ∈ Z). Sau khi ép kiểu, x=12
  • y=978 (y là số nguyên, y ∈ Z) và bạn muốn ép kiểu x thành một số thực (y ∈ R). Sau khi ép kiểu, y=987.000…
Ép kiểu là hành động thay đổi kiểu dữ liệu của một biến
Ép kiểu là hành động thay đổi kiểu dữ liệu của một biến

Khi nào cần ép kiểu?

  • Đưa dữ liệu về định dạng mà mình mong muốn giúp xử lý cho thuật toán.
  • Khởi tạo hoặc gán một biến với giá trị của một kiểu dữ liệu khác.
  • Kiểu dữ liệu của biến trả về kết quả khác với kiểu dữ liệu trả về của hàm đó.
Khi nào cần ép kiểu?
Khi nào cần ép kiểu?

Cách ép kiểu ngầm định trong C, C++ (Implicit type conversion)

Ép kiểu ngầm định là gì?

Ép kiểu ngầm định (Implicit type conversion) là việc chương trình lập trình sẽ tự hiểu và chuyển đổi kiểu dữ liệu của biến mà không cần sự can thiệp của bất cứ câu lệnh nào từ lập trình viên.

Ép kiểu ngầm định thường dùng khi ta chuyển đổi một biến sang một kiểu dữ liệu tương tự lớn hơn để đảm bảo độ chính xác, không sợ bị mất hay sai lệch dữ liệu và chỉ sử dụng khi biết rõ biến đó chứa kiểu dữ liệu tương ứng với kiểu mà ta cần chuyển tới.

Ép kiểu ngầm định (Implicit type conversion)
Ép kiểu ngầm định (Implicit type conversion)

Cách ép kiểu ngầm định

Khi bạn gán một số nguyên bất kỳ cho biến có kiểu dữ liệu là số thực. Hệ thống sẽ tự ngầm định và chuyển số nguyên đó thành số thực mà không cần sự can thiệp của bất kỳ cú pháp hay thuật toán nào.

Ví dụ: bạn gán a và b bằng 5. Trong đó, a là kiểu int (số nguyên) và b là kiểu float (số thực).

Kết quả:

  • a là kiểu số nguyên (int) và số 5 là một số nguyên dương (cùng kiểu dữ liệu) nên khi xuất kết quả ra màn hình kết quả sẽ là a=5.
  • b là kiểu số thực (float) mà 5 là một số nguyên dương (không cùng kiểu dữ liệu) nên khi xuất kết quả ra màn hình kết quả sẽ là b=5.0f.
Ví dụ ép kiểu ngầm định
Ví dụ ép kiểu ngầm định

Độ ưu tiên kiểu dữ liệu khi ép kiểu

Tham khảo bài viết: Các kiểu dữ liệu trong C/C++ thường gặp

Độ ưu tiên kiểu dữ liệu khi ép kiểu
Độ ưu tiên kiểu dữ liệu khi ép kiểu

Các trường hợp lỗi ép kiểu thường gặp

Trường hợp 1: Lỗi kết quả (output) khi ép kiểu từ một kiểu dữ liệu lớn hơn sang kiểu dữ liệu nhỏ hơn

Khi gán x là giá trị kiểu int (số nguyên) cho biến c là giá trị kiểu char (ký tự) có phạm vi -128 đến 127 nên khi xuất kết quả ra màn hình, c sẽ mang một giá trị sai hoan toàn.

Thuật toán: Trường hợp 1.

Trường hợp lỗi ép kiểu 1
Trường hợp lỗi ép kiểu 1

Trường hợp 2: Kết quả bị sai lệch khi ép kiểu từ một kiểu số chấm động

Khi gán x là giá trị kiểu double (số thực) cho biến f là giá trị kiểu float (số thực chấm động) thì f chỉ có thể giữ độ chính xác đến 7 chữ số, còn lại kết quả phía sau đều bị sai lệch.

Thuật toán: Trường hợp 2.

Trường hợp lỗi ép kiểu 2
Trường hợp lỗi ép kiểu 2

Trường hợp 3: Ép kiểu một biến từ số thực chấm động sang số nguyên sẽ làm mất đi phần thập thân.

Khi gán x là giá trị kiểu double (số thực) cho biến a là giá trị kiểu int (số nguyên) thì a chỉ có thể giữ lại phần số nguyên, phần thập phân sẽ bị mất và không được làm tròn.

Thuật toán: Trường hợp 3.

Trường hợp lỗi ép kiểu 3
Trường hợp lỗi ép kiểu 3

Ép kiểu tường minh trong C, C++ (Explicit type conversion)

Ép kiểu tường minh là gì?

Ép kiểu tường minh (Explicit type conversion) là việc lập trình viên sẽ thực hiện việc gán và chuyển đổi kiểu dữ liệu của biến bằng các câu lệnh hoặc phép gán.

Cách ép kiểu tường minh

Cú pháp: static_cast<type>(value);

Giải thích:

  • static_cast: Toán tử ép kiểu
  • type: kiểu dữ liệu.
  • value: giá trị biến hoặc biểu thức.

Ví dụ: Nhập 2 số nguyên x, y bất kỳ. Hãy tính d=x/y.

Thuật toán: Bài tập minh họa ép kiểu tường minh

Cách ép kiểu tường minh
Cách ép kiểu tường minh

Trên đây là các cách ép kiểu trong C/C++ đơn giản nhất. Bạn có thể tham khảo và lựa chọn thực nghiệm trên thiết bị của mình. Chúc các bạn thành công.

Bài viết liên quan
Bài viết nên xem