ประเภทข้อมูล C ++
ในขณะที่เขียนโปรแกรมด้วยภาษาใด ๆ คุณจำเป็นต้องใช้ตัวแปรต่างๆเพื่อจัดเก็บข้อมูลต่างๆ ตัวแปรไม่ใช่อะไรนอกจากตำแหน่งหน่วยความจำที่สงวนไว้เพื่อเก็บค่า ซึ่งหมายความว่าเมื่อคุณสร้างตัวแปรคุณจะสงวนพื้นที่ในหน่วยความจำไว้
คุณอาจต้องการจัดเก็บข้อมูลประเภทข้อมูลต่างๆเช่นอักขระอักขระแบบกว้างจำนวนเต็มจุดลอยตัวจุดลอยตัวคู่บูลีนเป็นต้นตามประเภทข้อมูลของตัวแปรระบบปฏิบัติการจะจัดสรรหน่วยความจำและตัดสินใจว่าจะจัดเก็บอะไรใน หน่วยความจำที่สงวนไว้
ประเภทในตัวดั้งเดิม
C ++ เสนอโปรแกรมเมอร์ประเภทข้อมูลในตัวและประเภทข้อมูลที่กำหนดโดยผู้ใช้ ตารางต่อไปนี้แสดงประเภทข้อมูล C ++ พื้นฐานเจ็ดประเภท -
ประเภท | คำสำคัญ |
---|---|
บูลีน | บูล |
ตัวละคร | ถ่าน |
จำนวนเต็ม | int |
จุดลอยตัว | ลอย |
จุดลอยตัวคู่ | สองเท่า |
ไร้ค่า | เป็นโมฆะ |
ตัวอักษรกว้าง | wchar_t |
สามารถแก้ไขประเภทพื้นฐานได้หลายประเภทโดยใช้ตัวปรับแต่งประเภทเหล่านี้อย่างน้อยหนึ่งประเภท -
- signed
- unsigned
- short
- long
ตารางต่อไปนี้แสดงประเภทตัวแปรจำนวนหน่วยความจำที่ใช้ในการจัดเก็บค่าในหน่วยความจำและค่าสูงสุดและต่ำสุดคือเท่าใดซึ่งสามารถเก็บไว้ในตัวแปรประเภทดังกล่าวได้
ประเภท | ความกว้างบิตทั่วไป | ช่วงทั่วไป |
---|---|---|
ถ่าน | 1 ไบต์ | -127 ถึง 127 หรือ 0 ถึง 255 |
ถ่านที่ไม่ได้ลงนาม | 1 ไบต์ | 0 ถึง 255 |
ลงนามถ่าน | 1 ไบต์ | -127 ถึง 127 |
int | 4 ไบต์ | -2147483648 ถึง 2147483647 |
int ที่ไม่ได้ลงนาม | 4 ไบต์ | 0 ถึง 4294967295 |
ลงนาม int | 4 ไบต์ | -2147483648 ถึง 2147483647 |
int สั้น ๆ | 2 ไบต์ | -32768 ถึง 32767 |
int สั้นที่ไม่ได้ลงนาม | 2 ไบต์ | 0 ถึง 65,535 |
ลงนามสั้น int | 2 ไบต์ | -32768 ถึง 32767 |
int ยาว | 8 ไบต์ | -2,147,483,648 ถึง 2,147,483,647 |
ลงนามยาว int | 8 ไบต์ | เช่นเดียวกับ int ยาว |
int ยาวที่ไม่ได้ลงนาม | 8 ไบต์ | 0 ถึง 4,294,967,295 |
int ยาวยาว | 8 ไบต์ | - (2 ^ 63) ถึง (2 ^ 63) -1 |
int ยาวยาวที่ไม่ได้ลงนาม | 8 ไบต์ | 0 ถึง 18,446,744,073,709,551,615 |
ลอย | 4 ไบต์ | |
สองเท่า | 8 ไบต์ | |
คู่ยาว | 12 ไบต์ | |
wchar_t | 2 หรือ 4 ไบต์ | อักขระกว้าง 1 ตัว |
ขนาดของตัวแปรอาจแตกต่างจากที่แสดงในตารางด้านบนขึ้นอยู่กับคอมไพเลอร์และคอมพิวเตอร์ที่คุณใช้
ต่อไปนี้เป็นตัวอย่างซึ่งจะสร้างขนาดข้อมูลที่ถูกต้องในคอมพิวเตอร์ของคุณ
#include <iostream>
using namespace std;
int main() {
cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of short int : " << sizeof(short int) << endl;
cout << "Size of long int : " << sizeof(long int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
return 0;
}
ตัวอย่างนี้ใช้ endlซึ่งจะแทรกอักขระขึ้นบรรทัดใหม่หลังทุกบรรทัดและ << โอเปอเรเตอร์จะถูกใช้เพื่อส่งผ่านค่าหลายค่าไปยังหน้าจอ เรายังใช้sizeof() เพื่อรับขนาดของข้อมูลประเภทต่างๆ
เมื่อรวบรวมและดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ต่อไปนี้ซึ่งอาจแตกต่างกันไปในแต่ละเครื่อง -
Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4
การประกาศ typedef
คุณสามารถสร้างชื่อใหม่สำหรับประเภทที่มีอยู่โดยใช้ typedef. ต่อไปนี้เป็นไวยากรณ์ง่ายๆในการกำหนดประเภทใหม่โดยใช้ typedef -
typedef type newname;
ตัวอย่างเช่นต่อไปนี้จะบอกคอมไพเลอร์ว่าฟุตเป็นชื่ออื่นสำหรับ int -
typedef int feet;
ตอนนี้การประกาศต่อไปนี้ถูกต้องตามกฎหมายและสร้างตัวแปรจำนวนเต็มที่เรียกว่าระยะทาง -
feet distance;
ประเภทแจกแจง
ชนิดที่แจกแจงประกาศชื่อชนิดที่เป็นทางเลือกและชุดของตัวระบุศูนย์หรือมากกว่าที่สามารถใช้เป็นค่าของชนิด ตัวแจงนับแต่ละตัวเป็นค่าคงที่ซึ่งเป็นชนิดของการแจงนับ
การสร้างการแจงนับจำเป็นต้องใช้คีย์เวิร์ด enum. รูปแบบทั่วไปของประเภทการแจงนับคือ -
enum enum-name { list of names } var-list;
ในที่นี้ enum-name คือชื่อประเภทของการแจงนับ รายชื่อจะคั่นด้วยจุลภาค
ตัวอย่างเช่นรหัสต่อไปนี้กำหนดการแจกแจงของสีที่เรียกว่าสีและตัวแปร c ของประเภทสี สุดท้าย c กำหนดค่าเป็น "สีน้ำเงิน"
enum color { red, green, blue } c;
c = blue;
ตามค่าเริ่มต้นค่าของชื่อแรกคือ 0 ชื่อที่สองมีค่า 1 และค่าที่สามมีค่า 2 เป็นต้น แต่คุณสามารถตั้งชื่อเป็นค่าเฉพาะได้โดยการเพิ่มตัวเริ่มต้น ตัวอย่างเช่นในการแจงนับต่อไปนี้green จะมีค่า 5
enum color { red, green = 5, blue };
ที่นี่ blue จะมีค่าเท่ากับ 6 เนื่องจากแต่ละชื่อจะมีค่ามากกว่าหนึ่งชื่อที่นำหน้า