Bài 15: Ép Kiểu Dữ Liệu Trong Lập Trình C - Khuê Nguyễn
Có thể bạn quan tâm
Trong bài này chúng ta sẽ học cách ép kiểu dữ liệu (casting) trong C. Khi lập trì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 để 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 15 trong Serie Học lập trình C từ A tới Z
Table of Contents
- Ép kiểu là gì?
- Khi nào cần ép kiểu?
- Các loại ép kiểu dữ liệu
- Ép kiểu dữ liệu ngầm định
- Ép kiểu dữ liệu tường minh
- Kết
Ép kiểu là gì?
É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ỳ sáng một kiểu dữ liệu khác.
Ví dụ:
- x=15.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=15. Bỏ phần sau dấu phẩy
- 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… . Thêm phần sau dấu phấy
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 đó.
Các loại ép kiểu dữ liệu
Ép kiểu dữ liệu ngầm định
Trong quá trình biên dịch, nếu phát hiện 1 lệnh gán giá trị khác loại cho 1 biến, trình biên dịch sẽ tự động chuyển kiểu, gọi là cơ chế chuyển kiểu ngầm định.
Trình biên dịch sẽ hiện cảnh báo nếu xuất hiện sự chuyển kiểu không an toàn, gây mất mát giá trị, ví dụ như chuyển 1 dữ liệu có kích thước lớn, mang giá trị lớn về kiểu dữ liệu có kích thước nhỏ, hay dữ liệu số có dấu sang kiểu dữ liệu không dấu đều là chuyển kiểu không an toàn.
Khi tính toán 1 biểu thức, ví dụ như các phép toán số học, các hạng tử cần phải có cùng 1 kiểu thì việc tính toán mới diễn ra, nếu các hạng tử không cùng kiểu, sẽ xảy ra chuyển kiểu ngầm định, kiểu nhỏ hơn sẽ chuyển sang kiểu lớn hơn. Có dãy cấp độ như sau:
double d = 13; // tự động chuyển giá trị của d thành 13.0 int n = 16.95; // tự động chuyển giá trị của n thành 16Tại sao int lại là kiểu dữ liệu nhỏ nhất trong dãy, còn short và char ở đâu? Khi tính toán, kiểu dữ liệu short và char sẽ tự động được chuyển sang int.
Xét biểu thức sau:
int n = 10 + 16.95;Biểu thức bên phải là phép toán cộng giữa kiểu int (10) và kiểu double (16.95), khi đó 10 sẽ được chuyển kiểu thành 10.0 và phép toán trở thành 10.0 + 16.95, kết quả là 26.95, được gán cho n là 1 biến int nên được chuyển kiểu và n = 26.
Ép kiểu dữ liệu tường minh
Là việc chuyển 1 dữ liệu sang kiểu dữ liệu khác theo ý muốn của lập trình viên. Kiểu biến đổi này có thể làm mất thông tin. Cú pháp chuyển kiểu như sau:
(<kiểu dữ liệu>)<dữ liệu cần chuyển>
VD:
int n = 10; float f = (float)n; // chuyển kiểu tường minhKhi bắt đầu lập trình, có một lỗi phổ biến thường mắc phải là nhầm lẫn giữa phép chia các số nguyên trong toán học và phép chia các số nguyên trong lập trình, dẫn đến kết quả lập trình không được như mong muốn.
VD:
float f = 10 / 4;Mong muốn kết quả f = 2.5 nhưng quy ước trong C là khi hai số nguyên chia nhau thì kết quả lấy phần nguyên do đó f = 2. Khắc phục như sau:
float f = ((float)10) / 4; // chuyển kiểu tường minhHoặc 1 cách khác:
float f = (1.0 * 10) / 4; // chuyển kiểu ngầm địnhKết
Ép kiểu dữ liệu rất hay được sử dụng trong C. Tuy nhiên khi ép kiểu dữ liệu, chúng ta cần để ý việc dữ liệu bị cắt mất, dẫn tới 1 số lỗi khi lập trình.Nếu thấy có ích hãy chia sẻ bài viết và tham gia nhóm Nghiện Lập Trình để giao lưu và học hỏi nhé
5/5 - (1 bình chọn)Từ khóa » Toán Tử ép Kiểu Trong C++
-
4.2 Ép Kiểu Dữ Liệu - Khóa Học C++
-
Ép Kiểu Trong C++ - Techacademy
-
Ép Kiểu Trong C++ - Học Lập Trình C++ Online - Viettuts
-
Toán Tử ép Kiểu (casting) Trong C++
-
Ép Kiểu Tường Minh Trong C++ (Explicit Type Conversion In C++)
-
Ép Kiểu Ngầm định Trong C++ (Implicit Type Conversion In C++)
-
Toán Tử Trong C++
-
Ép Kiểu Trong C - Hoclaptrinh
-
Ép Kiểu Int Sang Float Và Ngược Lại Trong C/C++ - Lập Trình Không Khó
-
5 Toán Tử ép Kiểu Trong C++ | VnCoding
-
Tự Học C/C++ | Chuyển đổi Kiểu Rõ Ràng (casting) Và Static_cast
-
Sự Thật Về Ép Kiểu Trong C, C++ Là Gì? Cách ép Kiểu ... - Tiên Kiếm
-
5 Toán Tử ép Kiểu Trong C | PDF - Scribd
-
Nạp Chồng Toán Tử Trong C++ | TopDev
-
Phương Pháp ép Kiểu Dữ Liệu Trong C++
-
[Lập Trình C++ Cơ Bản] Bài 3: Kiểu Dữ Liệu, Hằng Và Biến. Câu Lệnh ...
-
Ép Kiểu Trong C, C++ Là Gì? Cách ép Kiểu Trong C/C++ đơn Giản
-
Toán Tử Trong C - AICurious
-
Cách Ép Kiểu Trong C