D Lập trình - Các kiểu dữ liệu

Trong ngôn ngữ lập trình D, kiểu dữ liệu đề cập đến một hệ thống mở rộng được sử dụng để khai báo các biến hoặc hàm thuộc các kiểu khác nhau. Kiểu của một biến xác định bao nhiêu không gian mà nó chiếm trong bộ nhớ và cách diễn giải mẫu bit được lưu trữ.

Các loại trong D có thể được phân loại như sau:

Sr.No. Loại & Mô tả
1

Basic Types

Chúng là các kiểu số học và bao gồm ba kiểu: (a) số nguyên, (b) dấu phẩy động và (c) ký tự.

2

Enumerated types

Chúng lại là kiểu số học. Chúng được sử dụng để xác định các biến chỉ có thể được gán một số giá trị nguyên rời rạc trong suốt chương trình.

3

The type void

Void xác định kiểu chỉ ra rằng không có giá trị nào.

4

Derived types

Chúng bao gồm (a) Kiểu con trỏ, (b) Kiểu mảng, (c) Kiểu cấu trúc, (d) Kiểu liên kết và (e) Kiểu hàm.

Các kiểu mảng và kiểu cấu trúc được gọi chung là kiểu tổng hợp. Kiểu của một hàm chỉ định kiểu của giá trị trả về của hàm. Chúng ta sẽ thấy các loại cơ bản trong phần sau trong khi các loại khác sẽ được đề cập trong các chương sắp tới.

Các loại số nguyên

Bảng sau đây cung cấp danh sách các kiểu số nguyên tiêu chuẩn với kích thước lưu trữ và phạm vi giá trị của chúng:

Kiểu Kích thước lưu trữ Phạm vi giá trị
bool 1 byte sai hay đúng
byte 1 byte -128 đến 127
ubyte 1 byte 0 đến 255
int 4 byte -2.147.483.648 đến 2.147.483.647
uint 4 byte 0 đến 4,294,967,295
ngắn 2 byte -32,768 đến 32,767
ushort 2 byte 0 đến 65,535
Dài 8 byte -9223372036854775808 đến 9223372036854775807
dài 8 byte 0 đến 18446744073709551615

Để có được kích thước chính xác của một loại hoặc một biến, bạn có thể sử dụng sizeofnhà điều hành. Kiểu biểu thức . (Sizeof) mang lại kích thước lưu trữ của đối tượng hoặc kiểu tính bằng byte. Ví dụ sau lấy kích thước của kiểu int trên bất kỳ máy nào:

import std.stdio; 
 
int main() { 
   writeln("Length in bytes: ", ulong.sizeof); 

   return 0; 
}

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

Length in bytes: 8

Các loại dấu chấm động

Bảng sau đề cập đến các loại dấu phẩy động tiêu chuẩn với kích thước lưu trữ, phạm vi giá trị và mục đích của chúng -

Kiểu Kích thước lưu trữ Phạm vi giá trị Mục đích
Phao nổi 4 byte 1,17549e-38 đến 3,40282e + 38 6 chữ số thập phân
gấp đôi 8 byte 2,22507e-308 đến 1,79769e + 308 15 chữ số thập phân
thực tế 10 byte 3,3621e-4932 đến 1,18973e + 4932 hoặc là kiểu dấu phẩy động lớn nhất mà phần cứng hỗ trợ, hoặc gấp đôi; cái nào lớn hơn
ifloat 4 byte 1,17549e-38i đến 3,40282e + 38i kiểu giá trị ảo của float
không có khả năng 8 byte 2,22507e-308i đến 1,79769e + 308i loại giá trị tưởng tượng của gấp đôi
tôi thật 10 byte 3,3621e-4932 đến 1,18973e + 4932 loại giá trị ảo của thực
cfloat 8 byte 1,17549e-38 + 1,17549e-38i đến 3,40282e + 38 + 3,40282e + 38i kiểu số phức tạo bởi hai dấu nổi
đôi 16 byte 2,22507e-308 + 2,22507e-308i đến 1,79769e + 308 + 1,79769e + 308i kiểu số phức tạo bởi hai nhân đôi
creal 20 byte 3,3621e-4932 + 3,3621e-4932i đến 1,18973e + 4932 + 1,18973e + 4932i kiểu số phức tạo bởi hai số thực

Ví dụ sau sẽ in không gian lưu trữ được lấy bởi kiểu float và các giá trị phạm vi của nó:

import std.stdio;

int main() { 
   writeln("Length in bytes: ", float.sizeof); 

   return 0; 
}

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau trên Linux:

Length in bytes: 4

Các loại ký tự

Bảng sau đây liệt kê các kiểu ký tự tiêu chuẩn với kích thước lưu trữ và mục đích của nó.

Kiểu Kích thước lưu trữ Mục đích
char 1 byte Đơn vị mã UTF-8
wchar 2 byte Đơn vị mã UTF-16
dchar 4 byte Đơn vị mã UTF-32 và điểm mã Unicode

Ví dụ sau sẽ in không gian lưu trữ được lấy bởi một kiểu char.

import std.stdio;

int main() {
   writeln("Length in bytes: ", char.sizeof);
   
   return 0;
}

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

Length in bytes: 1

Loại trống

Kiểu void chỉ định rằng không có giá trị nào. Nó được sử dụng trong hai loại tình huống -

Sr.No. Loại & Mô tả
1

Function returns as void

Có nhiều hàm khác nhau trong D không trả về giá trị hoặc bạn có thể nói chúng trả về giá trị vô hiệu. Một hàm không có giá trị trả về có kiểu trả về là void. Ví dụ,void exit (int status);

2

Function arguments as void

Có nhiều hàm khác nhau trong D không chấp nhận bất kỳ tham số nào. Một hàm không có tham số có thể chấp nhận là một khoảng trống. Ví dụ,int rand(void);

Bạn có thể chưa hiểu kiểu void tại thời điểm này, vì vậy hãy để chúng tôi tiếp tục và chúng tôi sẽ trình bày các khái niệm này trong các chương sắp tới.