Kích thước các kiểu dữ liệu trong C | Laptrinhcanban.com

HOME › >>

Kích thước các kiểu dữ liệu trong C

Trong ngôn ngữ lập trình C, việc hiểu kích thước của các kiểu dữ liệu là một phần quan trọng của việc quản lý bộ nhớ và hiệu năng của chương trình. Kích thước của kiểu dữ liệu xác định bao nhiêu bộ nhớ sẽ được cấp phát cho biến thuộc kiểu đó và làm thế nào chúng ta có thể tối ưu hóa việc sử dụng bộ nhớ. Trong bài viết này, chúng ta sẽ tìm hiểu về kích thước của các kiểu dữ liệu cơ bản trong ngôn ngữ C, cách tính kích thước các kiểu dữ liệu và cách chúng ta có thể quản lý chúng trong quá trình lập trình.

Kích thước các kiểu dữ liệu trong C

Có 3 loại dữ liệu tương ứng với 7 kiểu dữ liệu phổ biến trong C, với các thông số về kích thước cũng như phạm vi giá trị như sau:

LoạiKiểu dữ liệuKích thướcPhạm vi giá trị
Loại ký tựchar1 byte-127 ~ 128
Số nguyênshort int
int
long int
2 byte
4 byte
4 byte
-32768 ~ 32767
-2147483648 ~ 2147483647
-2147483648 ~ 2147483647
Số thực dấu phẩy độngfloat
double
long double
4 byte
8 byte
8 byte
3.4E-38 ~ 3.4E+38
1.7E-308 ~ 1.7E+308
1.7E-308 ~ 1.7E+308

Giống như ở bảng trên thì mỗi kiểu dữ liệu trong C đều được chỉ định một kích thước riêng, và tương ứng với kích thước đó thì khả năng lưu trữ giá trị cũng sẽ được thiết lập. Ví dụ như kiểu char ở trên có kích thước nhỏ nhất (1 byte) và chỉ chứa được các giá trị trong phạm vi từ -127 đến 128 chẳng hạn.

Lưu ý rằng trong C do không có quy tắc rõ ràng về kích thước của một kiểu giá trị, và có thể khác nhau tùy thuộc vào môi trường phát triển, do đó các thông tin về kích thước của kiểu dữ liệu ở trên chỉ mang tính tham khảo.

Sau đây hãy cùng Kiyoshi tìm hiểu chi tiết về kích thước các loại dữ liệu trong C như sau.

Kiểu Dữ Liệu nguyên Thủy (Primitive Data Types)

Các kiểu dữ liệu nguyên thủy là những kiểu dữ liệu cơ bản nhất trong C và có kích thước xác định trên mỗi nền tảng. Dưới đây là kích thước tiêu chuẩn của các kiểu dữ liệu nguyên thủy trên hầu hết các máy tính:

  1. int: Kiểu dữ liệu này thường có kích thước là 4 byte trên máy tính 32-bit và 8 byte trên máy tính 64-bit. Trên máy tính 32-bit, nó có phạm vi từ -2,147,483,648 đến 2,147,483,647, trong khi trên máy tính 64-bit, phạm vi là từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807.

  2. float: Kiểu dữ liệu này thường có kích thước là 4 byte và độ chính xác khoảng 7 chữ số thập phân.

  3. double: Kiểu dữ liệu này thường có kích thước là 8 byte và độ chính xác khoảng 15 chữ số thập phân.

  4. char: Kiểu dữ liệu này thường có kích thước là 1 byte và được sử dụng để lưu trữ một ký tự.

  5. bool: Kiểu dữ liệu này thường có kích thước là 1 byte và được sử dụng để lưu trữ giá trị true (1) hoặc false (0).

Kiểu Dữ Liệu Số Nguyên (Integer Data Types)

Ngoài các kiểu dữ liệu nguyên thủy, C còn cung cấp các kiểu dữ liệu số nguyên với kích thước và phạm vi khác nhau. Dưới đây là một số kiểu dữ liệu số nguyên phổ biến:

  1. short int (hoặc short): Kiểu dữ liệu này thường có kích thước là 2 byte và có phạm vi từ -32,768 đến 32,767 (trên máy tính 32-bit). Kiểu short được sử dụng khi bạn cần lưu trữ các số nguyên ngắn.

  2. long int (hoặc long): Kiểu dữ liệu này thường có kích thước là 4 byte trên máy tính 32-bit và 8 byte trên máy tính 64-bit. Phạm vi của kiểu long là từ -2,147,483,648 đến 2,147,483,647 (trên máy tính 32-bit).

  3. long long int (hoặc long long): Kiểu dữ liệu này thường có kích thước là 8 byte và phạm vi từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807.

Kiểu Dữ Liệu Tùy Chọn (Custom Data Types)

Trong C, bạn có thể định nghĩa các kiểu dữ liệu tùy chỉnh bằng cách sử dụng cấu trúc (struct) hoặc liệt kê (enum). Kích thước của các kiểu dữ liệu này phụ thuộc vào cách bạn định nghĩa chúng.

Kiểu dữ liệu struct: Kích thước của một kiểu dữ liệu struct phụ thuộc vào số lượng và kiểu dữ liệu của các thành phần bên trong nó. Ví dụ:

struct Nguoi {
char ho_ten[50];
int tuoi;
};

Kích thước của biến kiểu struct Nguoi sẽ là tổng kích thước của char ho_ten[50]int tuoi.

Kiểu dữ liệu enum: Kích thước của một kiểu dữ liệu enum thường là 4 byte, tuy nhiên, nó có thể thay đổi trên các nền tảng khác nhau.

enum Thang {
Thang1,
Thang2,
Thang3,
};

Kích thước của biến kiểu enum Thang phụ thuộc vào số lượng thành viên trong enum và nền tảng mà bạn sử dụng.

Kiểm tra kích thước (size) của kiểu dữ liệu trong C

Sau đây Kiyoshi sẽ hướng dẫn bạn cách kiểm tra kích thước (size) của dữ liệu trong C. Lưu ý là do trong C do không có quy tắc rõ ràng về kích thước của một kiểu giá trị, và có thể khác nhau tùy thuộc vào môi trường phát triển, nên giá trị của phép tìm này có thể khác đi trong môi trường phát triển C của bạn.

Để kiểm tra kích thước (size) của kiểu dữ liệu trong C, chúng ta sử dụng tới hàm sizeof() với cú pháp sau đây:

sizeof(type);

Trong đó type là tên của kiểu dữ liệu cần kiểm tra, ví dụ như là int, short int, double hay long double chẳng hạn. Chúng ta sẽ sử dụng mã lệnh sau để tiến hành kiểm tra kích thức của kiểu dữ liệu trong C như sau:

#include <stdio.h>

int main(void){
printf("char : %d\n", sizeof(char));
printf("short int : %d\n", sizeof(short int));
printf("int : %d\n", sizeof(int));
printf("long int : %d\n", sizeof(long int));
printf("float : %d\n", sizeof(float));
printf("double : %d\n", sizeof(double));
printf("long double : %d\n", sizeof(long double));

return 0;
}

Kết quả kiểm tra kích thước size của kiểu dữ liệu trong môi trường phát triển C của Kiyoshi sẽ là:

char : 1
short int : 2
int : 4
long int : 8
float : 4
double : 8
long double : 16

Bạn cũng hãy thử xem kết quả trong môi trường phát triển C của bạn có giống Kiyoshi hay không nhé.

Kích Thước Của Kiểu Dữ Liệu và Hiệu Năng

Việc hiểu kích thước của các kiểu dữ liệu trong C quan trọng đặc biệt khi bạn cần tối ưu hóa việc sử dụng bộ nhớ và hiệu năng của chương trình. Dưới đây là một số quan điểm liên quan:

  1. Tối Ưu Hóa Bộ Nhớ: Khi bạn khai báo biến, sử dụng kiểu dữ liệu có kích thước nhỏ hơn mà vẫn đảm bảo phạm vi đủ cho nhu cầu của bạn. Việc này giúp tiết kiệm bộ nhớ và giúp chương trình chạy nhanh hơn.

  2. Tối Ưu Hóa Hiệu Năng: Sử dụng kiểu dữ liệu phù hợp có thể giúp cải thiện hiệu năng của chương trình. Ví dụ, sử dụng int thay vì double khi bạn không cần độ chính xác cao trong tính toán.

  3. Tránh Sử Dụng Kiểu Dữ Liệu Không Cần Thiết: Đừng sử dụng kiểu dữ liệu lớn hơn làm tăng sự lãng phí bộ nhớ và giảm hiệu năng.

  4. Cân Nhắc Sử Dụng Kiểu Dữ Liệu Tùy Chọn: Sử dụng kiểu dữ liệu tùy chỉnh (struct hoặc enum) khi cần để tổ chức dữ liệu một cách cụ thể và dễ đọc.

  5. Sử Dụng sizeof: Hàm sizeof trong C cho phép bạn xác định kích thước của một kiểu dữ liệu hoặc biến cụ thể. Điều này giúp bạn kiểm tra và quản lý bộ nhớ một cách chính xác.

int kich_thuoc_int = sizeof(int); // Kích thước của kiểu int

Kết Luận

Kích thước của các kiểu dữ liệu trong ngôn ngữ lập trình C là một khía cạnh quan trọng của quản lý bộ nhớ và hiệu năng của chương trình. Việc hiểu kích thước của từng kiểu dữ liệu, cân nhắc lựa chọn kiểu dữ liệu phù hợp, và tối ưu hóa việc sử dụng bộ nhớ có thể giúp bạn viết mã nguồn hiệu quả và hiệu năng. Nắm vững kiến thức về kích thước của các kiểu dữ liệu trong C là một yếu tố quan trọng giúp bạn trở thành một lập trình viên thành thạo và viết các ứng dụng chất lượng.

URL Link

https://laptrinhcanban.com/c/lap-trinh-c-co-ban/bien-trong-c/kich-thuoc-cac-kieu-du-lieu-trong-c/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.