การเขียนโปรแกรม D - ประเภทข้อมูล

ในภาษาโปรแกรม D ประเภทข้อมูลหมายถึงระบบที่กว้างขวางที่ใช้สำหรับการประกาศตัวแปรหรือฟังก์ชันประเภทต่างๆ ประเภทของตัวแปรจะกำหนดพื้นที่ที่ใช้ในหน่วยเก็บข้อมูลและวิธีตีความรูปแบบบิตที่จัดเก็บ

ประเภทใน D สามารถจำแนกได้ดังนี้ -

ซีเนียร์ ประเภทและคำอธิบาย
1

Basic Types

เป็นประเภทเลขคณิตและประกอบด้วยสามประเภท: (a) จำนวนเต็ม (b) ทศนิยมและอักขระ (c)

2

Enumerated types

เป็นประเภทเลขคณิตอีกครั้ง ใช้เพื่อกำหนดตัวแปรที่สามารถกำหนดเฉพาะค่าจำนวนเต็มไม่ต่อเนื่องบางค่าตลอดทั้งโปรแกรม

3

The type void

ตัวระบุชนิดเป็นโมฆะบ่งชี้ว่าไม่มีค่าที่พร้อมใช้งาน

4

Derived types

ซึ่งรวมถึง (a) ประเภทตัวชี้ (b) ประเภทอาร์เรย์ (c) ประเภทโครงสร้าง (ง) ประเภทสหภาพและ (จ) ประเภทฟังก์ชัน

ประเภทอาร์เรย์และประเภทโครงสร้างเรียกรวมกันว่าประเภทการรวม ประเภทของฟังก์ชันระบุประเภทของค่าที่ส่งกลับของฟังก์ชัน เราจะเห็นประเภทพื้นฐานในส่วนต่อไปนี้ในขณะที่ประเภทอื่น ๆ จะกล่าวถึงในบทต่อ ๆ ไป

ประเภทจำนวนเต็ม

ตารางต่อไปนี้แสดงรายการประเภทจำนวนเต็มมาตรฐานพร้อมขนาดพื้นที่จัดเก็บและช่วงค่า -

ประเภท ขนาดการจัดเก็บ ช่วงค่า
บูล 1 ไบต์ เท็จหรือจริง
ไบต์ 1 ไบต์ -128 ถึง 127
ubyte 1 ไบต์ 0 ถึง 255
int 4 ไบต์ -2,147,483,648 ถึง 2,147,483,647
uint 4 ไบต์ 0 ถึง 4,294,967,295
สั้น 2 ไบต์ -32,768 ถึง 32,767
ushort 2 ไบต์ 0 ถึง 65,535
ยาว 8 ไบต์ -9223372036854775808 ถึง 9223372036854775807
อูหลง 8 ไบต์ 0 ถึง 18446744073709551615

เพื่อให้ได้ขนาดที่แน่นอนของประเภทหรือตัวแปรคุณสามารถใช้ไฟล์ sizeofตัวดำเนินการ ประเภทนิพจน์(sizeof)ให้ขนาดหน่วยเก็บข้อมูลของอ็อบเจ็กต์หรือพิมพ์เป็นไบต์ ตัวอย่างต่อไปนี้ได้รับขนาดของประเภท int บนเครื่องใด ๆ -

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

   return 0; 
}

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังนี้ -

Length in bytes: 8

ประเภทจุดลอยตัว

ตารางต่อไปนี้กล่าวถึงประเภทจุดลอยตัวมาตรฐานที่มีขนาดพื้นที่จัดเก็บช่วงค่าและวัตถุประสงค์ -

ประเภท ขนาดการจัดเก็บ ช่วงค่า วัตถุประสงค์
ลอย 4 ไบต์ 1.17549e-38 ถึง 3.40282e + 38 ทศนิยม 6 ตำแหน่ง
สองเท่า 8 ไบต์ 2.22507e-308 ถึง 1.79769e + 308 ทศนิยม 15 ตำแหน่ง
จริง 10 ไบต์ 3.3621e-4932 ถึง 1.18973e + 4932 ประเภทจุดลอยตัวที่ใหญ่ที่สุดที่ฮาร์ดแวร์รองรับหรือสองเท่า แล้วแต่จำนวนใดจะใหญ่กว่า
ifloat 4 ไบต์ 1.17549e-38i ถึง 3.40282e + 38i ประเภทค่าจินตภาพของการลอย
ไอดับเบิ้ล 8 ไบต์ 2.22507e-308i ถึง 1.79769e + 308i ประเภทมูลค่าจินตภาพของคู่
ireal 10 ไบต์ 3.3621e-4932 ถึง 1.18973e + 4932 ประเภทมูลค่าจินตภาพของจริง
cfloat 8 ไบต์ 1.17549e-38 + 1.17549e-38i ถึง 3.40282e + 38 + 3.40282e + 38i ประเภทจำนวนเชิงซ้อนที่ทำจากสองโฟลต
cdouble 16 ไบต์ 2.22507e-308 + 2.22507e-308i ถึง 1.79769e + 308 + 1.79769e + 308i ประเภทจำนวนเชิงซ้อนที่ทำจากสองคู่
Creal 20 ไบต์ 3.3621e-4932 + 3.3621e-4932i ถึง 1.18973e + 4932 + 1.18973e + 4932i ประเภทจำนวนเชิงซ้อนที่ทำจากสองเรียล

ตัวอย่างต่อไปนี้จะพิมพ์พื้นที่เก็บข้อมูลที่ถ่ายโดยประเภทลอยและค่าช่วง -

import std.stdio;

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

   return 0; 
}

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นโปรแกรมจะสร้างผลลัพธ์ต่อไปนี้บน Linux -

Length in bytes: 4

ประเภทตัวละคร

ตารางต่อไปนี้แสดงประเภทอักขระมาตรฐานพร้อมขนาดพื้นที่จัดเก็บและวัตถุประสงค์

ประเภท ขนาดการจัดเก็บ วัตถุประสงค์
ถ่าน 1 ไบต์ หน่วยรหัส UTF-8
wchar 2 ไบต์ หน่วยรหัส UTF-16
dchar 4 ไบต์ หน่วยรหัส UTF-32 และจุดรหัส Unicode

ตัวอย่างต่อไปนี้จะพิมพ์พื้นที่จัดเก็บที่ใช้โดยประเภทถ่าน

import std.stdio;

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

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังนี้ -

Length in bytes: 1

ประเภทโมฆะ

ประเภทโมฆะระบุว่าไม่มีค่า ใช้ในสองสถานการณ์ -

ซีเนียร์ ประเภทและคำอธิบาย
1

Function returns as void

มีฟังก์ชั่นต่างๆใน D ซึ่งไม่คืนค่าหรือคุณสามารถพูดได้ว่ามันคืนค่าเป็นโมฆะ ฟังก์ชันที่ไม่มีค่าส่งคืนมีประเภทการส่งคืนเป็นโมฆะ ตัวอย่างเช่น,void exit (int status);

2

Function arguments as void

มีฟังก์ชันต่างๆใน D ซึ่งไม่ยอมรับพารามิเตอร์ใด ๆ ฟังก์ชันที่ไม่มีพารามิเตอร์สามารถยอมรับเป็นโมฆะได้ ตัวอย่างเช่น,int rand(void);

คุณอาจไม่เข้าใจประเภทโมฆะในตอนนี้ดังนั้นให้เราดำเนินการต่อและเราจะกล่าวถึงแนวคิดเหล่านี้ในบทต่อ ๆ ไป