0965303260
TP. Hồ Chí Minh

[C]. Ép Kiểu Dữ Liệu

Ép kiểu dữ liệu trong lập trình C là quá trình chuyển đổi kiểu dữ liệu này thành kiểu dữ liệu khác thông qua toán tử gán. 

NỘI DUNG : 

  • Ép Kiểu Ngầm Định
  • Ép Kiểu Tường Minh

ảnh main

1. Ép Kiểu Ngầm Định

Ép kiểu ngầm định - Implicit Type Casting là khi chuyển đổi kiểu dữ liệu mà không làm mất đi giá trị ban đầu của biến. 

Ép kiểu ngầm định được thực hiện một cách tự động khi bạn gán giá trị của một biến này cho biến khác mang kiểu dữ liệu tương thích, thường là kiểu dữ liệu bao hàm. Ví dụ bạn có thể gán giá trị của 1 biến int vào biến long long mà không làm mất giá trị ban đầu của biến int. 

Ví dụ 1 : 

#include <stdio.h>

int main(){
    int n = 100;
    long long m = n; // Implicit casting
    float x = 20.18923;
    double y = x; // Implicit casting
    printf("%lld %.5lf\n", m, y);
}
Output : 
100 20.18923


Ví dụ 2 : Gán giá trị của biến có kiểu dữ liệu lớn hơn cho biến có kiểu dữ liệu nhỏ hơn có thể gây mất mát giá trị

#include <stdio.h>

int main(){
    long long m = 182831892845128;
    int n = m;
    printf("%d\n", n);
    float x = 3.123124;
    int y = x;
    printf("%d\n", y);
}
Output : 
-569978296
3


2. Ép Kiểu Tường Minh

Ép kiểu tường minh - Explicit type casting được thực hiện bởi lập trình viên trong một vài tình huống bắt buộc.

Ví dụ bạn cần tìm thương của phép chia 2 số nguyên và muốn lấy phần thập phân của phép chia, khi đó bạn bắt buộc phải sử dụng số chia hoặc số bị chia là một số thực vì nếu chia 2 số nguyên thì mặc định phần thập phân sẽ không được giữ lại. Quá trình này sẽ được xử lý bằng cách ép kiểu sang số thực float hoặc double.

Cú pháp : (data-type) Biểu thức; 

Ví dụ 1: Ép kiểu khi chia 2 số nguyên

#include <stdio.h>

int main(){
    int a = 10, b = 3;
    float div1 = a / b;
    float div2 = (float) a / b; // Ép kiểu tường minh
    printf("%.2f %.2f\n", div1, div2);
}
Output : 
3.00 3.33


Ví dụ 2 : Ép kiểu khi nhân 2 số nguyên int

#include <stdio.h>

int main(){
    int n = 1000000, m = 1000000;
    long long mul1 = n * m;
    long long mul2 = (long long) n * m; //Ép kiểu tường minh
    printf("%lld %lld", mul1, mul2);
}