โครงสร้างอย่างx = x++;
บ่งชี้ว่าคุณอาจเข้าใจผิดว่าตัว++
ดำเนินการทำอะไร:
// original code
int x = 7;
x = x++;
ลองเขียนสิ่งนี้ใหม่เพื่อทำสิ่งเดียวกันโดยยึดการลบ++
โอเปอเรเตอร์:
// behaves the same as the original code
int x = 7;
int tmp = x; // value of tmp here is 7
x = x + 1; // x temporarily equals 8 (this is the evaluation of ++)
x = tmp; // oops! we overwrote y with 7
ตอนนี้เรามาเขียนใหม่เพื่อทำ (สิ่งที่ฉันคิด) คุณต้องการ:
// original code
int x = 7;
x++;
ความละเอียดอ่อนที่นี่คือ++
ผู้ประกอบการปรับเปลี่ยนตัวแปรx
ซึ่งแตกต่างจากการแสดงออกเช่นx + x
ซึ่งจะประเมินเป็นค่า int แต่ปล่อยให้ตัวแปรx
ตัวเองไม่เปลี่ยนแปลง พิจารณาการสร้างเช่นfor
ห่วงที่เคารพ:
for(int i = 0; i < 10; i++)
{
System.out.println(i);
}
สังเกตเห็นi++
ในที่นั่น? มันเป็นผู้ประกอบการเดียวกัน เราสามารถเขียนfor
ลูปนี้แบบนี้และมันจะทำตัวเหมือนเดิม:
for(int i = 0; i < 10; i = i + 1)
{
System.out.println(i);
}
ฉันยังแนะนำไม่ให้ใช้++
โอเปอเรเตอร์ในนิพจน์ที่ใหญ่กว่าในกรณีส่วนใหญ่ เนื่องจากความละเอียดอ่อนของเมื่อมันปรับเปลี่ยนตัวแปรดั้งเดิมในก่อนเพิ่มขึ้นโพสต์ ( ++x
และx++
ตามลำดับ) มันเป็นเรื่องง่ายมากที่จะแนะนำข้อบกพร่องที่ลึกซึ้งที่ยากที่จะติดตาม
int x = 7; x = ++x;
แน่นอนว่ายังเป็นรหัสที่น่ากลัวคุณไม่จำเป็นต้องกำหนดใหม่int x = 7; x++;
ก็เพียงพอแล้ว