ในตัวดำเนินการ C, ++ และ -- เรียกว่าตัวดำเนินการเพิ่มและลด เป็นโอเปอเรเตอร์ unary ที่ต้องการตัวถูกดำเนินการเพียงตัวเดียว ดังนั้น ++ และ -- ตัวดำเนินการสามารถปรากฏก่อนหรือหลังตัวถูกดำเนินการด้วยเอฟเฟกต์เดียวกัน
นั่นหมายความว่าทั้ง i++ และ ++i จะเทียบเท่ากัน
i=5; i++; printf("%d",i);
และ
i=5 ++i; printf("%d",i);
ทั้งสองจะทำให้ i=6.
อย่างไรก็ตาม เมื่อใช้นิพจน์การเพิ่มขึ้นพร้อมกับตัวดำเนินการมอบหมาย ลำดับความสำคัญของตัวดำเนินการจะปรากฏเป็นภาพ
i=5; j=i++;
ในกรณีนี้ ลำดับความสำคัญของ =จะสูงกว่า postfix ++ ดังนั้น ค่าของ i ถูกกำหนดให้กับ i ก่อนที่จะเพิ่มค่า i ที่นี่ j กลายเป็น 5 และฉันกลายเป็น 6
i=5; j=++i;
ในกรณีนี้ ลำดับความสำคัญของคำนำหน้า ++ มากกว่า =โอเปอเรเตอร์ ดังนั้นฉันจะเพิ่มก่อนและค่าที่เพิ่มขึ้นถูกกำหนดให้กับ j ที่นี่ i และ j ทั้งคู่กลายเป็น 6.
#include <stdio.h> int main() { int i=5,j; j=i++; printf ("\nafter postfix increment i=%d j=%d", i,j); i=5; j=++i; printf ("\n after prefix increment i=%d j=%d",i,j); return 0; }
ผลลัพธ์คือ
after postfix increment i=6 j=5 after prefix increment i=6 j=6