ฉันได้เจอสำนวนการเขียนโปรแกรมนี้เมื่อเร็ว ๆ นี้:
const float Zero = 0.0;
ซึ่งจะใช้ในการเปรียบเทียบ:
if (x > Zero) {..}
ใครสามารถอธิบายได้ว่าสิ่งนี้มีประสิทธิภาพมากขึ้นหรือสามารถอ่านหรือบำรุงรักษาได้ดีกว่า:
if (x > 0.0) {..}
หมายเหตุ: ฉันสามารถคิดอื่น ๆเหตุผลที่จะกำหนดนี้คงอิ่มเพียงแค่สงสัยเกี่ยวกับการใช้งานในนี้บริบท
xมีประเภทแสดงfloatว่าx > 0.0บังคับให้เลื่อนระดับdoubleซึ่งอาจมีประสิทธิภาพน้อยกว่า นั่นไม่ใช่เหตุผลที่ดีสำหรับการใช้ชื่ออย่างต่อเนื่องแม้ว่าจะเพียงเพื่อให้แน่ใจว่าค่าคงที่ของคุณมีประเภทที่ถูกต้อง (เช่น0f, float(0)หรือdecltype(x)(0))
13.37ไม่ได้ก็float doubleดังนั้นถ้าคุณต้องการfloatมันก็เป็นไปได้ว่าครูสอนพิเศษของคุณถูกต้อง ในบริบทบางอย่าง (เช่นการมอบหมายให้ลอย) 13.37โดยปริยายจะถูกแปลงเป็นสิ่งfloatที่คุณต้องการและในบริบทอื่น ๆ (เช่นการลดประเภทเทมเพลต) มันจะไม่เป็นในขณะที่static const floatเริ่มต้นเสมอตามประเภทที่คุณตั้งใจ ดังนั้นปลอดภัยมากขึ้นประเภท ใจคุณดังนั้นจะเป็น13.37f! มีเหตุผลอื่นในการหลีกเลี่ยงมาโครมากกว่า "ประเภทความปลอดภัย" ดังนั้นผู้สอนจึงให้เหตุผลที่ไม่ดีแก่คุณ