จนถึงวันนี้ฉันคิดอย่างนั้น:
i += j;
เป็นเพียงทางลัดสำหรับ:
i = i + j;
แต่ถ้าเราลองทำสิ่งนี้:
int i = 5;
long j = 8;
จากนั้นi = i + j;จะไม่รวบรวม แต่i += j;จะรวบรวมได้
มันหมายความว่าในความเป็นจริงi += j;เป็นทางลัดสำหรับบางสิ่งบางอย่างเช่นนี้
i = (type of i) (i + j)?
i+=(long)j;แม้จะรวบรวมได้ดี
i += (int) f;ปลดเปลื้อง f ก่อนเพิ่มดังนั้นจึงไม่เทียบเท่า (int) i += f;ปลดเปลื้องผลลัพธ์หลังจากการมอบหมายไม่เท่ากับ ไม่มีสถานที่ที่จะนำนักแสดงที่จะหมายถึงว่าคุณต้องการที่จะโยนค่าหลังจากเพิ่ม แต่ก่อนที่จะได้รับมอบหมาย