ฉันใช้int
ประเภทเพื่อเก็บค่า โดยความหมายของโปรแกรมค่าแตกต่างกันเสมอในช่วงที่เล็กมาก (0 - 36) และint
(ไม่ใช่ a char
) ถูกใช้เพียงเพราะประสิทธิภาพของ CPU
ดูเหมือนว่าการเพิ่มประสิทธิภาพทางคณิตศาสตร์พิเศษหลายอย่างสามารถทำได้กับจำนวนเต็มเล็กน้อย การเรียกใช้ฟังก์ชันจำนวนมากในจำนวนเต็มเหล่านั้นอาจถูกปรับให้เหมาะกับการดำเนินการ "เสก" จำนวนน้อยและบางฟังก์ชั่นอาจปรับให้เหมาะกับการค้นหาบนโต๊ะ
ดังนั้นเป็นไปได้หรือไม่ที่จะบอกคอมไพเลอร์ว่านี่int
เป็นช่วงเล็ก ๆ เสมอและเป็นไปได้หรือไม่ที่คอมไพเลอร์จะทำการปรับแต่งเหล่านั้นให้ดีที่สุด?
unsigned
ประเภทเนื่องจากจะง่ายต่อการคอมไพเลอร์เพื่อให้เหตุผล
var value: 0..36;
เช่น
int
และunsigned int
ต้องมีการลงชื่อ - หรือขยายเป็นศูนย์จาก 32 ถึง 64 บิตเช่นกันในระบบส่วนใหญ่ที่มีตัวชี้ 64- บิต โปรดทราบว่าใน x86-64 การดำเนินการกับการลงทะเบียนแบบ 32- บิตเป็นศูนย์ขยายเป็น 64- บิตฟรี (ไม่ใช่การขยายสัญญาณ แต่การโอเวอร์โฟลว์ที่ลงชื่อแล้วนั้นเป็นพฤติกรรมที่ไม่ได้กำหนดดังนั้นคอมไพเลอร์สามารถใช้คณิตศาสตร์ ดังนั้นคุณจะเห็นคำแนะนำพิเศษสำหรับฟังก์ชั่น zero-expand 32-bit args ไม่ใช่ผลลัพธ์ของการคำนวณ คุณต้องการประเภทที่ไม่ได้ลงนามแคบกว่า