ประเภทที่มีจำนวนเต็ม: char, short, int, long, long long
ลองมาดูตัวอย่างบางส่วน:
ถ่าน cvar = 50; ถ่าน cvar = 50; svar แบบสั้น = 50; int ivar = 50; ยาว lvar1 = 50; ยาว lvar2 = 50;
ตัวดำเนินการเลขคณิตพื้นฐาน:
ส่วนใหญ่จะคุ้นเคยกับตัวดำเนินการเลขคณิตพื้นฐานและลำดับความสำคัญ: + , -, *, /
ต่อไปนี้คือตัวอย่างวิธีการใช้ตัวดำเนินการ Unary: ++ และ --:
การแสดงออก | เทียบเท่ากับ | เทียบเท่ากับ |
cvar += 5; | cvar = cvar + 5; | |
++ซีวาร์; | cvar++; | cvar = cvar + 1; |
--cvar; | ควาร์ก--; | cvar = cvar - 1; |
ระวังตัวแปร++ กับ ++ตัวแปร!
++ตัวแปร
int x = 10, y = 20; X = ++y;
หมายเหตุ: หลังจากการดำเนินการนี้: X = 21 และ Y ยัง = 21
ตัวแปร++
int x = 10, y = 20; X = y++;
หมายเหตุ: หลังจากการดำเนินการนี้: X = 20 และ Y = 21
เปรียบเทียบประเภทข้อมูลจำนวนเต็ม
มีกลุ่มหรือประเภทข้อมูลที่อนุญาตทั้งค่าบวกและค่าลบ - "ลงนาม" อย่างไรก็ตาม คุณไม่จำเป็นต้องระบุว่าเป็นนัย ดูด้านล่าง:
ประเภทข้อมูล | ค่าน้อยที่สุด | มูลค่าสูงสุด |
char | -2 7 หรือ -128 | 2 7 - 1 หรือ 127 |
สั้น | -2 15 หรือ -32,768 | 2 15 - 1 หรือ 32,767 |
int | -2 31 หรือ -2,147,483,648 | 2 31 – 1 หรือ 2,147,483,647 |
ยาว | -2 31 หรือ -2,147,483,648 | 2 31 – 1 หรือ 2,147,483,647 |
ยาวยาว | -2 63 หรือ -9,223,372,036,854,775,808 | 2 63 – 1 หรือ 9,223,372,036,854,775,807 |
มีกลุ่มหรือประเภทข้อมูลที่อนุญาตเฉพาะค่าบวก – “ไม่ได้ลงนาม”
ประเภทข้อมูล | ค่าน้อยที่สุด | มูลค่าสูงสุด |
ถ่านที่ไม่ได้ลงชื่อ | 0 | 2 8 - 1 หรือ 255 |
ไม่ได้ลงนามสั้น | 0 | 2 16 - 1 หรือ 65,535 |
ไม่ได้ลงนาม int | 0 | 2 32 – 1 หรือ 4,294,967,295 |
ไม่ได้ลงนามยาว | 0 | 2 32 – 1 หรือ 4,294,967,295 |
ไม่ได้ลงนามยาวยาว | 0 | 2 64 – 1 หรือ 18,446,744,073,709,551,615 |
คุณจะตรวจสอบขนาดข้อมูลได้อย่างไร?
ในตอนนี้ คุณควรทราบโอเปอเรเตอร์ sizeof( )
ข้อมูลนี้มีหน่วยเก็บข้อมูลหน่วยความจำที่เรียกว่า "ไบต์" ซึ่งจะกล่าวถึงเล็กน้อยในหัวข้อถัดไป
ตัวอย่างที่จะบอกคุณว่าควรพิมพ์ # ไบต์โดยใช้โอเปอเรเตอร์ sizeof()
ลองใช้วิธีนี้เพื่อยืนยันตัวเอง หากคุณเปลี่ยนไปใช้คอนโทรลเลอร์อื่น คุณสามารถทำสิ่งต่อไปนี้เพื่อตรวจสอบได้เสมอ
Brain.Screen.setFont(fontType::mono30); Brain.Screen.printAt(1, 20,"char has %d ไบต์", sizeof(char)); Brain.Screen.printAt(1, 50,"short has %d ไบต์", sizeof(short)); Brain.Screen.printAt(1, 80,"int has %d ไบต์", sizeof(int)); Brain.Screen.printAt(1, 110, "long has %d ไบต์", sizeof(long)); Brain.Screen.printAt(1, 140, "long long has %d ไบต์", sizeof(long long)); Brain.Screen.printAt(1, 170, "float has %d ไบต์", sizeof(float)); Brain.Screen.printAt(1, 200, "double has %d ไบต์", sizeof(double));
ไบต์หมายถึงอะไร
“ไบต์” เป็นหน่วยมาตรฐานของการจัดเก็บข้อมูล
หนึ่งไบต์ = 8 บิต หนึ่งบิตเป็นหน่วยหน่วยความจำที่เล็กที่สุดซึ่งสามารถมีค่าได้เพียง 1 วินาทีและ 0 วินาที (ค่าไบนารี) แต่หน่วยหน่วยความจำที่เล็กที่สุดที่คุณจะได้รับจากระบบคือ 1 ไบต์ ดังนั้นคุณไม่สามารถขอ 1.5 ไบต์ ฯลฯ
ลองมาดูที่ถ่าน สั้นพอที่จะแสดงได้ง่าย
หากเต็มไปด้วย 1 วินาที คุณจะได้รับ 28-1 ค่านี้ควรเป็นค่าสูงสุดของ "ถ่านที่ไม่ได้ลงนาม" ที่ควรเก็บไว้
ระบบจะสงวนบิตการสั่งซื้อสูงสุด เพื่อให้ได้ค่าลบ ดังนั้น ค่าสูงสุดสำหรับ “ถ่าน” จะอยู่ในช่วงตั้งแต่ -128 ถึง 127 อย่างไรก็ตาม ความจุยังคงเท่ากับ "ถ่านที่ไม่ได้ลงนาม" แม้ว่าจะมีความแตกต่างในช่วงข้อมูลก็ตาม
ในคอมพิวเตอร์ จะใช้การดำเนินการที่เรียกว่า Two's Complement นี่เป็นส่วนหนึ่งของหัวข้อภายใต้การดำเนินการ Bitwise ซึ่งอยู่นอกขอบเขตสำหรับเอกสารนี้ เพิ่มเติมเกี่ยวกับหัวข้อนี้จะกล่าวถึงในเอกสารอื่น
char กับ int ต่างกันอย่างไร?
ต่อไปนี้คือการใช้งานทั่วไปสำหรับ "char" และ "int":
ถ่าน var1 = '9'; int var2 = 9;
เป็นความเข้าใจผิดทั่วไปที่ว่า "ถ่าน" สามารถเก็บเฉพาะสัญลักษณ์เช่น 'a,' 'b,' หรือ '9' นั่นไม่ถูกต้อง
อันที่จริง ประเภท "ถ่าน" นั้นเหมือนกับประเภท "int" ยกเว้นว่าความจุของถ่านนั้นมีเพียง 1 ไบต์ และความจุของ int คือ 4 ไบต์ ดังนั้น ช่วงขนาดข้อมูลจึงแตกต่างกันระหว่างทั้งสอง คุณจะเห็นได้ว่าในตารางช่วงข้อมูลด้านบน
ส่วนรหัสต่อไปนี้จะช่วยให้คุณมองเห็นอักขระและ int ได้ชัดเจนขึ้น
int iX = '0'; ถ่าน cX1 = 49; ถ่าน cX2 = 50; Brain.Screen.printAt(3, 20, "การแสดงแทน '%c' = %d",iX, iX); Brain.Screen.printAt(3, 50, "การแสดงแทน '%c' = %d",cX1, cX1); Brain.Screen.printAt(3, 80, "การแสดงแทน '%c' = %d",cX2, cX2); Brain.Screen.printAt(3, 140, "So '%c' - '%c' = %d ", cX2, iX, cX2 - cX1);
เอาท์พุท:
การแสดง int ของ '0' = 48 การแทนค่า int ของ '1' = 49 การแทนค่า int ของ '2' = 50 ดังนั้น '2' – '0' = 1
คุณอาจสงสัยว่าทำไม '0' ถึงแสดง 48
ซึ่งจะนำไปสู่หัวข้อที่เรียกว่าการแปลง “รหัส ASCII” มาตรฐาน ASCII เป็นหนึ่งในเหตุการณ์สำคัญของ IEEE ที่เผยแพร่ในปี 2506 ซึ่งอยู่นอกขอบเขตของบทความนี้ ขอแนะนำให้คุณค้นหาตารางรหัส ASCII ทางออนไลน์ คุณจะพบข้อมูลออนไลน์มากมายเกี่ยวกับตารางรหัส ASCII