การสร้างตัวแปรสำหรับจำนวนเต็มใน VEXcode Pro V5

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

ประเภทที่เก็บจำนวนเต็ม: char, short, int, long, long long

ลองมาดูตัวอย่างบางส่วน:

ถ่าน cvar = 50;
ถ่าน cvar = 50;
สวาร์สั้น = 50;
int ivar = 50;
ยาว lvar1 = 50;
ยาว lvar2 = 50;

ตัวดำเนินการทางคณิตศาสตร์พื้นฐาน:

ส่วนใหญ่คุ้นเคยกับตัวดำเนินการทางคณิตศาสตร์พื้นฐานและลำดับก่อนหน้า: + , -, *, /

นี่คือตัวอย่างบางส่วนของวิธีใช้ตัวดำเนินการ Unary: ++ และ --:

การแสดงออก เทียบเท่ากับ เทียบเท่ากับ
cvar += 5; cvar = cvar + 5;  
++cvar; cvar++; cvar = cvar + 1;
--cvar; 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


เปรียบเทียบชนิดข้อมูลจำนวนเต็ม

มีกลุ่มหรือประเภทข้อมูลที่อนุญาตทั้งค่าบวกและค่าลบ – “ลงนาม” อย่างไรก็ตาม คุณไม่จำเป็นต้องระบุสิ่งนั้นเนื่องจากเป็นนัย ดูด้านล่าง:

ประเภทข้อมูล ค่าที่น้อยที่สุด ค่าสูงสุด
ชาร์ -2 7 หรือ -128 2 7 - 1 หรือ 127
สั้น -2 15 หรือ -32,768 2 15 - 1 หรือ 32,767
อินท์ -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
จำนวนเต็มที่ไม่มีเครื่องหมาย 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 มี %d ไบต์", sizeof(char));
Brain.Screen.printAt(1, 50,"short มี %d ไบต์", sizeof(short)); 
Brain.Screen.printAt(1, 80,"int มี %d ไบต์", sizeof(int));
Brain.Screen.printAt(1, 110, "long มี %d ไบต์", sizeof(long));
Brain.Screen.printAt(1, 140, "long long มี %d ไบต์", sizeof(long long));
Brain.Screen.printAt(1, 170, "float มี %d ไบต์", sizeof(float));
Brain.Screen.printAt(1, 200, "double มี %d ไบต์", sizeof(double));

ข้อความที่แสดงบนหน้าจอ V5 Brain:

char มี 1 ไบต์
มี 2 ไบต์ int มี
ไบต์ long มี
ไบต์
long มี
ไบต์ float มี 4 ไบต์
มี 8 ไบต์

ไบต์หมายถึงอะไร

“ไบต์” เป็นหน่วยมาตรฐานของการจัดเก็บข้อมูล

หนึ่งไบต์ = 8 บิต หนึ่งบิตเป็นหน่วยหน่วยความจำที่เล็กที่สุดซึ่งสามารถมีค่าได้เพียง 1 วินาทีและ 0 วินาที (ค่าไบนารี) แต่หน่วยหน่วยความจำที่เล็กที่สุดที่คุณสามารถรับได้จากระบบคือ 1 ไบต์ ดังนั้นคุณไม่สามารถขอ 1.5 ไบต์ ฯลฯ

มาดูชาร์กันดีกว่า สั้นพอที่จะแสดงได้อย่างง่ายดาย

แผนภาพแสดงค่า unsigned char ที่มี 8 บิต โดยแต่ละบิตมีค่าตั้งแต่ 7 ถึง 0 และค่าที่สอดคล้องกันตั้งแต่ 128 ถึง 1 พร้อมตัวอย่างการคำนวณค่า 136 และ 255

หากเต็มไปด้วย 1 คุณจะได้ 28-1 ค่านี้ควรเป็นค่าสูงสุดของ "ถ่านที่ไม่ได้ลงนาม" ที่ควรเก็บไว้

แผนภาพแสดงชนิดข้อมูล char ที่มีบิตค่า 7 บิตและบิตเครื่องหมายสงวน 1 บิต รวมถึงตัวอย่างการคำนวณค่า −120 และ 127

ระบบขอสงวน บิตลำดับสูงสุด เพื่อให้ค่าลบ ดังนั้นค่าสูงสุดสำหรับ "ถ่าน" อยู่ในช่วงตั้งแต่ -128 ถึง 127 อย่างไรก็ตาม ความจุยังคงเหมือนกับ “ถ่านที่ไม่ได้ลงนาม” แม้ว่าช่วงข้อมูลจะแตกต่างกันก็ตาม

ในคอมพิวเตอร์ จะใช้การดำเนินการที่เรียกว่า Two's Complement นี่เป็นส่วนหนึ่งของหัวข้อภายใต้การดำเนินการของ Bitwise ซึ่งอยู่นอกขอบเขตสำหรับเอกสารนี้ เพิ่มเติมเกี่ยวกับหัวข้อนี้จะกล่าวถึงในเอกสารอื่น


ความแตกต่างระหว่าง char กับ int คืออะไร?

ต่อไปนี้เป็นการใช้งานทั่วไปสำหรับ "char" และ "int":

char var1 = '9'; 
int var2 = 9;

เป็นความเข้าใจผิดที่พบบ่อยว่า "char" สามารถเก็บได้เฉพาะสัญลักษณ์เช่น 'a' 'b' หรือ '9' เท่านั้น นั่นไม่ถูกต้อง

ที่จริงแล้ว ประเภท "char" จะเหมือนกับประเภท "int" ยกเว้นว่าความจุของ char นั้นมีเพียง 1 ไบต์ และความจุของ int คือ 4 ไบต์ ดังนั้นช่วงขนาดข้อมูลจึงแตกต่างกันระหว่างทั้งสอง คุณจะเห็นได้ว่าในตารางช่วงข้อมูลด้านบน

ส่วนของโค้ดต่อไปนี้จะช่วยให้คุณมองเห็น char และ int ได้ชัดเจนยิ่งขึ้น

int iX = '0';
  char cX1 = 49;
  char cX2 = 50; 

  Brain.Screen.printAt(3, 20, "int representation of '%c' =  %d",iX, iX);
  Brain.Screen.printAt(3, 50, "int representation of '%c' =  %d",cX1, cX1);
  Brain.Screen.printAt(3, 80, "int representation of '%c' =  %d",cX2, cX2);
  Brain.Screen.printAt(3, 140, "So '%c' - '%c' =  %d ", cX2, iX, cX2 - cX1);

เอาท์พุท:

ค่าจำนวนเต็มของ '0' = 48
ค่าจำนวนเต็มของ '1' = 49
ค่าจำนวนเต็มของ '2' = 50

ดังนั้น '2' – '0' = 1

คุณอาจสงสัยว่า: ทำไม '0' ถึงแสดง 48?

ซึ่งจะนำไปสู่หัวข้อที่เรียกว่าการแปลง "รหัส ASCII" มาตรฐาน ASCII เป็นหนึ่งในเหตุการณ์สำคัญที่สำคัญของ IEEE ที่เผยแพร่ในปี 1963 สิ่งนี้อยู่นอกขอบเขตของบทความนี้ ขอแนะนำให้คุณค้นหาตารางรหัส ASCII ทางออนไลน์ คุณจะพบข้อมูลออนไลน์มากมายเกี่ยวกับตารางรหัส ASCII

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: