Menu
CoddyTech

Ép kiểu phần 1

Thuộc phần Kiến thức nền tảng trong hành trình C++ của Coddy. Bài học 14 trên 74.

Ép kiểu là quá trình chuyển đổi một giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác.

Trong C++, chúng ta có thể chuyển số nguyên thành số thực, số thực thành số nguyên và nhiều kiểu chuyển đổi khác. Có hai kiểu ép kiểu: ngầm định (tự động) và tường minh (thủ công).

Ví dụ về Integer to Double:

Ép kiểu ngầm định (tự động):

int number = 5;
double decimal = number; // tự động chuyển thành 5.0

// khi có phép tính
int x = 7;
double result = x / 2.0; // result có giá trị 3.5

Lưu ý: Khi chia hai giá trị int, C++ thực hiện phép chia số nguyên: phần thập phân bị loại bỏ. Ví dụ, 7 / 2 cho kết quả 3, không phải 3.5. Để có kết quả thập phân, ít nhất một toán hạng phải là double (ví dụ, 7 / 2.0 cho kết quả 3.5).

Ép kiểu tường minh (thủ công) Double to Integer:

double decimal = 9.7;
int number = (int) decimal;  // thành 9 (phần thập phân bị cắt bỏ)

// với phép tính
double price = 19.99;
int roundedPrice = (int) price;  // thành 19

Phong cách ưu tiên trong C++ hiện đại: Thay vì dùng phép ép kiểu theo phong cách C (int) decimal, bạn nên dùng static_cast<>(), cách này an toàn hơn và thể hiện ý định của bạn rõ ràng hơn:

double decimal = 9.7;
int number = static_cast<int>(decimal);  // thành 9 (phần thập phân bị cắt bỏ)

double price = 19.99;
int roundedPrice = static_cast<int>(price);  // thành 19

Lưu ý: Cả (int) value và static_cast<int>(value) đều cho cùng một kết quả ở đây, nhưng static_cast<>() là cách được khuyến nghị trong C++ hiện đại vì nó hiển thị rõ phép chuyển đổi và được trình biên dịch kiểm tra.

challenge icon

Thử thách

Người mới

Viết một chương trình C++ minh họa việc ép kiểu. Thực hiện các yêu cầu sau:

Ép kiểu biến price thành int và lưu kết quả vào biến mới có tên intPrice.

Tự làm thử

    int intPrice = ?; // Ép kiểu tường minh từ double sang int
    
    
    // In ra các giá trị
    std::cout << "Price: " << price << std::endl;
    std::cout << "Int Price: " << intPrice << std::endl;
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch C++ online