การเขียนโปรแกรม 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); |
คุณอาจไม่เข้าใจประเภทโมฆะในตอนนี้ดังนั้นให้เราดำเนินการต่อและเราจะกล่าวถึงแนวคิดเหล่านี้ในบทต่อ ๆ ไป