ตัวดำเนินการกำหนดค่าแบบผสม (Compound Assignment Operators)
แนะนำใหม่| English | ความหมาย |
|---|---|
| compound assignment operator/ˈkɒmpaʊnd əˈsaɪnmənt ˈɒpəreɪtə/ | ตัวดำเนินการกำหนดค่าแบบผสม |
วิธีลัดสำหรับการอัปเดต
- การอัปเดตตัวแปรจากตัวมันเองเป็นเรื่องปกติมาก จึงมีวิธีลัด
- Compound assignment operator รวมการดำเนินการเข้ากับ
= x += 3;หมายความว่าx = x + 3;พอดี- ครอบครัวของสัญลักษณ์นี้:
+=,-=,*=,/=,%=.
Operator ทั้งห้าชนิด
x += 5→ เพิ่ม5เข้ากับx.x -= 5→ ลบ5ออก.x *= 2→ คูณxด้วยสอง.x /= 2→ หารxด้วยสอง (ใช้กฎ int).x %= 3→ แทนที่xด้วยx % 3(เศษเหลือ).- แต่ละอันอ่านค่าปัจจุบัน, ทำ operation, แล้วเก็บผลลัพธ์กลับ.
Increment และ decrement
x++เพิ่ม1เข้ากับx(เหมือนx += 1หรือx = x + 1).x--ลบ1ออกจากx.- สิ่งเหล่านี้พบได้บ่อยมากใน loop เพื่อเพิ่มค่าตัวนับ
- มันเปลี่ยนตัวแปรทันที — ไม่ต้องใช้
=
กฎชนิดข้อมูลเดียวกันใช้ได้
- Compound operators ปฏิบัติตาม กฎชนิดข้อมูล เหมือนกับรูปแบบยาว
int x = 7; x /= 2;ให้ผลลัพธ์เป็น3(การหาร int ยังตัดทอนอยู่).- การใช้
x += 2.5;กับintอาจต้องระวัง — ชนิดของxไม่ได้เปลี่ยนไป. - วิธีลัดนี้สั้นลงเท่านั้น; การคำนวณเหมือนกันเป๊ะ
x += 3 คือ x = x + 3 พอดี — กฎชนิดข้อมูลไม่เปลี่ยน. ดังนั้น int x = 7; x /= 2; ยังคงให้ผลลัพธ์เป็น 3 (การหาร int ตัดทอน), ไม่ใช่ 3.5. Compound operators เป็นเพียงวิธีลัด; ถ้ารูปแบบยาวจะตัดทอนหรือเกิด overflow รูปแบบสั้นก็จะทำเช่นเดียวกัน. และ x++ ก็คือ x += 1 เช่นกัน.
การติดตามตัวนับ:
int x = 10;x += 5;→xคือ15.x *= 2;→xคือ30.x--;→xคือ29.x %= 5;→xคือ4(29 % 5).
Compound assignment operators (+=, -=, *=, /=, %=) คือคำย่อ: x += 3 หมายถึง x = x + 3 x++ และ x-- เพิ่มหรือลบ 1 พวกมันปฏิบัติตาม กฎประเภทเดียวกัน กับรูปแบบยาว — การหาร int ใน x /= 2 ยังคงตัดทอน
การเพิ่มค่าตัวนับ (Stepping a counter)
แต่ละตัวดำเนินการแบบผสมจะอัปเดต x ในตำแหน่งเดิม
x += 3 มีผลเหมือนกันเป๊ะกับ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
การกำหนดค่าแบบผสมคือทางลัดของ x = x + 3
int x = 10; x += 5; x *= 2; ค่าของ x คืออะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
10 → 15 → 30.
int x = 7; x /= 2; ค่าของ x คืออะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
การหาร int จะตัดเศษ: 7/2 = 3
x++ มีผลเหมือนกับ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
x++ เพิ่ม 1 เหมือนกับ x += 1
ตัวดำเนินการแบบผสมใช้กฎชนิดข้อมูลเดียวกันกับรูปแบบเต็ม (ดังนั้น x /= 2 กับ int จึงตัดเศษ)
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ทางลัดไม่เปลี่ยนหลักคณิตศาสตร์ — การหาร int ยังคงตัดเศษ