ฉันใช้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 ไม่ใช่ผลลัพธ์ของการคำนวณ คุณต้องการประเภทที่ไม่ได้ลงนามแคบกว่า