Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Ép kiểu (Typecasting) trong C

Ép kiểu (typecasting) chuyển đổi một kiểu dữ liệu sang kiểu khác. Có 2 loại:

1. Ép kiểu ngầm (Implicit Type Casting)

Trình biên dịch tự thực hiện khi biểu thức chứa nhiều kiểu dữ liệu, để tránh mất dữ liệu. Quy tắc: kiểu "nhỏ" → kiểu "lớn" (integer promotion, usual arithmetic conversions).

Ví dụ

#include <stdio.h>
int main() {
    int a = 10;
    char b = 'S';     // ASCII 83
    float c = 2.88;
    a = a + b;        // char -> int
    printf("char -> int: %d\n", a); // 93
    c = c + a;        // int -> float
    printf("int -> float: %f\n", c); // 95.88
    return 0;
}

2. Ép kiểu tường minh (Explicit Type Casting)

Người lập trình chủ động chuyển đổi bằng toán tử ép kiểu.

Cú pháp

(kieu_moi) bieu_thuc

Ví dụ

#include <stdio.h>
int main() {
    float c = 5.55;
    int s = (int)c + 1; // Ép float -> int (cắt phần thập phân)
    printf("Ep kieu tuc minh: %d\n", s); // 6
    return 0;
}

Lưu ý quan trọng

  • Ép từ kiểu lớn sang nhỏ có thể mất dữ liệu (truncation, overflow).
  • Ép con trỏ kiểu này sang kiểu khác cần cẩn trọng (vi phạm strict aliasing rule).
  • Ưu tiên ép kiểu kiểu C++ (static_cast, reinterpret_cast) nếu viết C++.