Trong thực tế, mọi thông tin đều có dạng cụ thể: tuổi là số nguyên, chiều cao là số thập phân, tên sách là chuỗi ký tự. Để máy tính "hiểu" và lưu trữ những giá trị này, C cung cấp các kiểu dữ liệu tương ứng.
Các kiểu dữ liệu cơ bản
char– ký tự (1 byte)short– số nguyên ngắn (≥2 byte)int– số nguyên (≥2 byte, thường 4 byte)long– số nguyên dài (≥4 byte)long long– số nguyên rất dài (≥8 byte)float– số thực đơn (4 byte)double– số thực kép (8 byte)long double– số thực mở rộng (≥8 byte)
Khai báo và gán giá trị
Ký tự – char
#include <stdio.h>
int main(void) {
char kyTu = 'A'; // 1 byte
printf("Ký tự: %c\\n", kyTu);
return 0;
}
Số nguyên – int
#include <stdio.h>
int main(void) {
int tuoi = 25; // 4 byte
printf("Tuổi: %d\\n", tuoi);
return 0;
}
Số ngắn – short
#include <stdio.h>
int main(void) {
short diem = 9; // 2 byte
printf("Điểm: %hd\\n", diem);
return 0;
}
Số thực – float và double
#include <stdio.h>
int main(void) {
float chieuCao = 1.75f; // 4 byte
double canNang = 65.3; // 8 byte
printf("Chiều cao: %.2f m\\n", chieuCao);
printf("Cân nặng: %.1lf kg\\n", canNang);
return 0;
}
Kiểm tra kích thước với sizeof
Toán tử sizeof trả về số byte mà một biến hoặc kiểu dữ liệu chiếm trong bộ nhớ.
#include <stdio.h>
int main(void) {
printf("char: %zu byte\\n", sizeof(char));
printf("short: %zu byte\\n", sizeof(short));
printf("int: %zu byte\\n", sizeof(int));
printf("long: %zu byte\\n", sizeof(long));
printf("long long: %zu byte\\n", sizeof(long long));
printf("float: %zu byte\\n", sizeof(float));
printf("double: %zu byte\\n", sizeof(double));
printf("long double: %zu byte\\n", sizeof(long double));
return 0;
}
Kết quả mẫu trên hệ thống 64-bit GCC:
char: 1 byte short: 2 byte int: 4 byte long: 8 byte long long: 8 byte float: 4 byte double: 8 byte long double: 16 byte
Quy tắc về kích thước
C chuẩn chỉ định:
sizeof(char) == 1sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)sizeof(float) ≤ sizeof(double) ≤ sizeof(long double)
Việc chia nhỏ kiểu dữ liệu giúp lập trình viên tối ưu bộ nhớ: dùng short cho các giá trị nhỏ, double khi cần độ chính xác cao.