ข้อจำกัดความรับผิดชอบ : ฉันรู้ดีว่าความหมายของคำนำหน้าและการเพิ่มคำนำหน้า ดังนั้นโปรดอย่าอธิบายให้ฉันฟังว่ามันทำงานอย่างไร
การอ่านคำถามเกี่ยวกับการโอเวอร์โฟลว์ของสแต็คฉันไม่สามารถช่วยได้ แต่สังเกตว่าโปรแกรมเมอร์สับสนโดยผู้ประกอบการเพิ่ม postfix ซ้ำแล้วซ้ำอีก จากคำถามนี้จะเกิดขึ้น: มีกรณีการใช้งานใดบ้างที่การเพิ่ม postfix ให้ประโยชน์ที่แท้จริงในแง่ของคุณภาพของรหัส?
ให้ฉันอธิบายคำถามของฉันด้วยตัวอย่าง นี่คือการใช้งานแบบย่อของstrcpy
:
while (*dst++ = *src++);
แต่นั่นไม่ใช่รหัสการจัดทำเอกสารด้วยตัวเองที่แน่นอนที่สุดในหนังสือของฉัน (และมันสร้างคำเตือนที่น่ารำคาญสองประการในคอมไพเลอร์สติ) ดังนั้นมีอะไรผิดปกติกับทางเลือกต่อไปนี้?
while (*dst = *src)
{
++src;
++dst;
}
จากนั้นเราสามารถกำจัดการมอบหมายที่สับสนในสภาพและรับรหัสที่ไม่มีการเตือนอย่างสมบูรณ์:
while (*src != '\0')
{
*dst = *src;
++src;
++dst;
}
*dst = '\0';
(ใช่ฉันรู้src
และdst
จะมีค่าสิ้นสุดที่แตกต่างกันในโซลูชันทางเลือกเหล่านี้ แต่เนื่องจากstrcpy
ผลตอบแทนทันทีหลังจากลูปจึงไม่สำคัญในกรณีนี้)
ดูเหมือนว่าจุดประสงค์ของการเพิ่ม postfix คือการสร้างโค้ดให้สั้นที่สุด ฉันเพียงแค่ล้มเหลวที่จะเห็นว่านี่คือสิ่งที่เราควรพยายาม หากนี่เป็นเรื่องเกี่ยวกับประสิทธิภาพ แต่ยังคงมีความเกี่ยวข้องในวันนี้
int c = 0; c++;
strcpy
วิธีด้วยวิธีนี้ (ด้วยเหตุผลที่คุณพูดถึงไปแล้ว)