ประเภทบูลมีขนาดเล็กกว่าประเภท Int จึงใช้พื้นที่ในหน่วยความจำน้อยลง ขึ้นอยู่กับระบบที่คุณคอมไพล์ด้วย / สำหรับ Int สามารถเป็น 4 - 8 ไบต์ในขณะที่ Bool เป็น 1 ไบต์ (ดังที่เห็นในบทความ MSDN นี้ )
จับคู่สิ่งนี้กับแง่มุมต่าง ๆ ของKISSและการออกแบบโปรแกรมที่ดีและเห็นได้ชัดว่าทำไมมันจึงดีกว่าถ้าใช้บูลเพื่อเก็บตัวแปรที่จะมีเพียง 2 ค่าเท่านั้น
ทำไมต้องทำสิ่งที่ซับซ้อนด้วยวัตถุที่สามารถเก็บค่าได้หลากหลายเมื่อคุณแน่ใจว่าคุณจำเป็นต้องเก็บค่าที่แตกต่างกัน 1 ใน 2 เท่านั้น?
เกิดอะไรขึ้นในระบบที่ใช้ int ถ้าคุณเก็บ 75 อันไว้ หากคุณได้เพิ่มเงื่อนไขพิเศษ
if (value >= 0 )
return true; //value is greater than 0, thus is true
else
return false; //value is 0 or smaller than 0, thus is false
หรือ
if (value == 0)
return false; //value is greater than 0, thus is true
else if (value == 1)
return true; //value is 0 or smaller than 0, thus is false
จากนั้นคุณจะครอบคลุมถึงสถานการณ์นี้ แต่ถ้าคุณไม่มีคุณก็ไม่ได้
คุณอาจมีกรณี (ขึ้นอยู่กับวิธีที่คุณเปลี่ยนค่าของ int) ที่คุณมีบัฟเฟอร์ล้นและค่า "รีเซ็ต" กลับเป็น 0 หรือขอบเขตล่างของ int ของคุณ (ซึ่งอาจจะอยู่ที่ไหนสักแห่งใน ภูมิภาคของ -127 ถึง −9,223,372,036,854,775,808 ขึ้นอยู่กับสถาปัตยกรรมเป้าหมายของคุณ ) จะเกิดอะไรขึ้นในโค้ดของคุณ?
อย่างไรก็ตามหากคุณใช้บูลคุณสามารถใช้สิ่งนี้:
if(continueBool == true)
return true;
else
return false;
หรือแม้กระทั่ง:
return (continueBool== true) ? true : false;
หรือแม้กระทั่ง:
return continueBool;
ขึ้นอยู่กับคอมไพเลอร์ของคุณอาจมีการปรับให้เหมาะสมที่สามารถทำงานกับรหัสที่ใช้ Bools เพื่อจัดเก็บค่าจริง / เท็จที่แมป ในขณะที่อาจไม่มีการปรับให้เหมาะสมที่สามารถทำได้สำหรับ Ints ที่ใช้เพื่อเก็บค่าจริง / เท็จที่แมป
นอกจากนี้เรายังต้องจำไว้ว่า C ++ (พร้อมด้วย C, Assembly และ FORTRAN) ใช้เพื่อเขียนโค้ดที่มีประสิทธิภาพสูงขนาดเล็กและรวดเร็ว ดังนั้นจะเป็นการดีกว่าถ้าคุณใช้ Bool ในกรณีนี้ - โดยเฉพาะถ้าคุณถูกทำเครื่องหมายในการใช้ตัวแปรหน่วยความจำแคชหรือเวลาของตัวประมวลผล
คำถามที่คล้ายกันคือ: ทำไมฉันจะเก็บจำนวนเต็ม (ค่า) ในการลอย? คำตอบ: คุณไม่ควรเพราะไม่มีประเด็น
เรื่องสั้นสั้น ๆ : ในฐานะที่คุณครู / ครูสอนพิเศษ / อาจารย์ / อาจารย์สอนคุณมากกว่าขนาดของประเภทค่าที่แตกต่างกับคุณ (ในกรณีที่คุณพลาด) และทำไมพวกเขาถึงมีความสำคัญในการพัฒนาซอฟต์แวร์
ฉันหวังว่าจะช่วยเป็นจุดเริ่มต้น (ฉันหวังว่ามันจะไม่ตรงตามความคิด)
int
คือเก็บจำนวนเต็มและจุดประสงค์ของการbool
เก็บค่าบูลีน (true
หรือfalse
) ใช้bool
IMOint
สะท้อนให้เห็นถึงการใช้งานที่ดีขึ้นกว่าการใช้