ฉันได้เจอสำนวนการเขียนโปรแกรมนี้เมื่อเร็ว ๆ นี้:
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
! มีเหตุผลอื่นในการหลีกเลี่ยงมาโครมากกว่า "ประเภทความปลอดภัย" ดังนั้นผู้สอนจึงให้เหตุผลที่ไม่ดีแก่คุณ