ตัวดำเนินการมอบหมายจะเก็บค่าในวัตถุที่กำหนดโดยตัวถูกดำเนินการทางซ้าย การดำเนินการมอบหมายมีสองประเภท:การกำหนดค่าอย่างง่าย ซึ่งค่าของตัวถูกดำเนินการที่สองถูกเก็บไว้ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก และการกำหนดค่าแบบผสม ซึ่งดำเนินการทางคณิตศาสตร์ กะ หรือระดับบิตก่อนจัดเก็บ ผลลัพธ์
ตัวอย่าง
ตัวอย่างการมอบหมายงานอย่างง่าย -
#include<iostream> using namespace std; int main() { int i; i = 10; // Simple Assignment cout << i; return 0; }
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
10
ตัวดำเนินการกำหนดแบบผสมถูกระบุในรูปแบบ e1 op=e2 โดยที่ e1 เป็นค่า l ที่ปรับเปลี่ยนได้ ไม่ใช่ประเภท const และ e2 เป็นหนึ่งในรายการต่อไปนี้ -
- ประเภทเลขคณิต
- ตัวชี้ ถ้า op คือ + หรือ –
รูปแบบ e1 op=e2 ทำงานเป็น e1 =e1 op e2 แต่ e1 จะได้รับการประเมินเพียงครั้งเดียว
ต่อไปนี้เป็นตัวดำเนินการกำหนดแบบผสมใน C++ -
ตัวดำเนินการ | คำอธิบาย |
---|---|
*= | คูณค่าของตัวถูกดำเนินการแรกด้วยค่าของตัวถูกดำเนินการที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
/= | หารค่าของตัวถูกดำเนินการแรกด้วยค่าของตัวถูกดำเนินการที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
%= | นำโมดูลัสของตัวถูกดำเนินการแรกที่ระบุโดยค่าของตัวถูกดำเนินการที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
+= | เพิ่มค่าของตัวถูกดำเนินการที่สองให้กับค่าของตัวถูกดำเนินการแรก เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
–= | ลบค่าของตัวถูกดำเนินการที่สองออกจากค่าของตัวถูกดำเนินการแรก เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
<<= | เปลี่ยนค่าของตัวถูกดำเนินการแรกเหลือจำนวนบิตที่ระบุโดยค่าของตัวถูกดำเนินการที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
>>= | เลื่อนค่าของตัวถูกดำเนินการแรกไปทางขวาตามจำนวนบิตที่ระบุโดยค่าของตัวถูกดำเนินการที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
&= | รับค่าระดับบิต AND ของตัวถูกดำเนินการที่หนึ่งและที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
^= | รับค่า OR พิเศษระดับบิตของตัวถูกดำเนินการที่หนึ่งและที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |=รับค่า OR รวมระดับบิตของตัวถูกดำเนินการที่หนึ่งและที่สอง เก็บผลลัพธ์ในวัตถุที่ระบุโดยตัวถูกดำเนินการแรก |
ตัวอย่าง
มาดูตัวอย่างการใช้ตัวดำเนินการเหล่านี้กัน −
#include<iostream> using namespace std; int main() { int a = 3, b = 2; a += b; cout << a << endl; a -= b; cout << a << endl; a *= b; cout << a << endl; a /= b; cout << a << endl; return 0; }
สิ่งนี้จะให้ผลลัพธ์ -
5 3 6 3
โปรดทราบว่าการกำหนดแบบผสมให้กับชนิดที่แจกแจงจะสร้างข้อความแสดงข้อผิดพลาด หากตัวถูกดำเนินการทางซ้ายเป็นประเภทตัวชี้ ตัวถูกดำเนินการทางขวาจะต้องเป็นประเภทตัวชี้หรือต้องเป็นนิพจน์คงที่ที่ประเมินเป็น 0 หากตัวถูกดำเนินการทางซ้ายเป็นประเภทปริพันธ์ ตัวถูกดำเนินการทางขวาจะต้องไม่ใช่ตัวชี้ ชนิด