Ép kiểu là cách để chuyển đổi một biến từ kiểu dữ liệu này sang kiểu dữ liệu khác. Ví dụ, khi bạn muốn lưu trữ một giá trị long cho một số số nguyên, bạn phải ép kiểu long thành int.
Trong C Bạn có thể chuyển đổi giá trị từ một kiểu này sang một kiểu khác sử dụng toán tử ép kiểu như sau:
(ten-kieu) bieu_thuc
Xem xét ví dụ sau mà toán tử ép kiểu làm cho phép chia một biến nguyên được thực hiện như là một hoạt động dấu chấm động:
#include main(){ int sochia = 32, sobichia = 6; double kq; kq = (double) sochia / sobichia; printf("Gia tri cua kq la: %f\n", kq ); printf("\n===========================\n"); printf("Hoc
Lap
Trinh chuc cac ban hoc tot! \n"); }Khi thực hiện đoạn code, kết quả sau đây được in ra, biến kq có kiểu double:
Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:
Nên ghi nhớ rằng ở đây toán tử ép kiểu có quyền ưu tiên hơn phép chia, vì thế giá trị của sochia đầu tiên được biến đổi sang kiểu double và cuối cùng nó thực hiện chia bởi tính toán trong trường giá trị double.
Bạn đang xem: Bài 15: ép kiểu dữ liệu trong lập trình c
Biến đổi kiểu có thể là được ẩn đi tức là được thực hiện tự động bởi bộ biên dịch, hoặc nó có thể được xác định một cách rõ ràng bởi sử dụng toán tử ép kiểu. Nó là tốt cho bạn nên sử dụng toán tử ép kiểu ở bất cứ đâu mà cần biến đổi kiểu.
Sự nâng cấp số nguyên trong C
Sự nâng cấp số nguyên là quá trình mà các giá trị của số nguyên nhỏ hơn int hoặc unsigned int chuyển đổi thành kiểu int hoặc unsigned int. Giả sử bạn có ví dụ về việc thêm một ký tự vào một số int:
#include main(){ int i = 21; char c = "c"; /* Gia tri ASCII la 99 */ int tong; tong = i + c; printf("Gia tri cua tong la: %d\n", tong ); printf("\n===========================\n"); printf("Hoc
Lap
Trinh chuc cac ban hoc tot! \n"); }Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:
Ở đây, giá trị của biến tong là 120 bởi vì trình biên dịch thực hiện sự nâng cấp số nguyên và chuyển đổi giá trị "c" thành ACII trước khi thực hiện phép toán thêm.
Phép chuyển đổi số học thông thường
Phép chuyển đổi số học thông thường là cách ép kiểu giá trị của nó thành một kiểu thường dùng. Trình biên dịch đầu tiên sẽ thực hiện nâng cấp số nguyên, nó chuyển đổi từ thấp đến cao, dưới đây là thứ bậc:
Phép chuyển đổi số học thông thường không được thực hiện cho các toán tử gán, cho các toán tử logic: && và ||. Chúng ta theo dõi ví dụ sau để hiểu khái niệm này:
#include main(){ int i = 21; char c = "c"; /* Gia tri ASCII la 99 */ float tong; tong = i + c; printf("Gia tri cua tong la: %f\n", tong ); printf("\n===========================\n"); printf("Hoc
Lap
Trinh chuc cac ban hoc tot! \n");}Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:
Ở đây, cách đơn giản để hiểu là đầu tiên giá trị c chuyển thành số nguyên, nhưng bởi vì giá trị cuối cùng là double, vì thế phép chuyển đổi số học thông thường áp dụng và bộ biên dịch biến đổi i và c thành kiểu float và lấy kết quả phép cộng chuyển sang kiểu float.
Trong bài viết này chúng ta sẽ cùng đi tìm hiểu về phương pháp ép kiểu dữ liệu trong Lập trình C/C++.
Ép kiểu dữ liệu trong lập trình C/C++
Ép kiểu dữ liệu tức là việc gán giá trị của một biến có kiểu dữ liệu này tới biến khác có kiểu dữ liệu khác.
Ta có cú pháp chung ép kiểu như sau:
(type) value;Với type là kiểu dữ liệu, và value là giá trị hoặc 1 biến chứa dữ liệu.
Ép kiểu số nguyên sang số thực và ngược lại
Kiểu dữ liệu số thì có 2 kiểu cơ bản là số thực(float, double) và số nguyên(int, long, long). Chúng ta đã có cấu trúc chung cho việc ép kiểu, vậy hãy cùng thực hiện một số ví dụ sau.
Ép kiểu số thực sang số nguyên
#include int main(){float a = 5.235;int b = (int)a;long long c = (long long)a;printf("Kieu so thuc: %f", a);printf("\n
Ep keu thanh keiu so nguyen int: %d", b);printf("\n
Kieu so nguyen long long: %d", c);}
Kết quả
Kieu so thuc: 5.235Ep keu thanh keiu so nguyen int: 5Kieu so nguyen long long: 5Ép kiểu số nguyên sang số thực
#include int main(){int a = 10;float b = (float)a;double c = (double)a;printf("Kieu so nguyen: %d", a);printf("\n
Ep kieu sang so thuc float: %f", b);printf("\n
Kieu so thuc double: %f", c);}
Kết quả
Kieu so nguyen: 10Ep kieu sang so thuc float: 10.00000Kieu so thuc double: 10.0000
Ép kiểu số nguyên sang ký tự và ngược lại
Trong C/C++ thì char là kiểu dữ liệu ký tự, về bản chất thì nó cũng gần giống như int thế nhưng char sẽ không thể lưu giá trị âm. Giá trị mà nó có thể lưu là từ 0 cho tới 255 tương ứng với 8 bit, tức là 1 byte và sẽ được hiển thị dưới dạng là ký tự tương ứng với bảng mã ASCII.Trong bảng mã ASCII ký tự H trong hệ thập phân là 72, tương ứng biến a đang mang giá trị 72, và để in ký tự của a ta sẽ sử dụng %c.
Vậy làm thế nào để ép 1 ký tự số thành 1 số, và từ 1 số sang 1 ký tự số.
(Hehe ở phần này bạn chú y một chút là mình sẽ dùng từ là ký tự số với số nhé)
Trong bảng mã ASCII thì ký tự số sẽ có mã thập phân là từ 48 tương ứng với ký tự 0, cho tới 57 tương ứng với ký tự 9.
Xem thêm: Bật mí 2 cách kiểm tra ip máy tính nhanh nhất mà bạn nên biết
Về blog Tui có cách
TUI CÓ CÁCH là blog cá nhân xây dựng nhằm chia sẻ các kỹ năng lập trình, thủ thuật máy tính, thủ thuật điện thoại, kiến thức kiếm tiền online mà tôi biết đến với cộng đồng.
Kết nối với tôi
Blogger
Youtube
cdvhnghean.edu.vn · Bảo vệ nội dung bởi