ใน C ตัวดำเนินการ ++ และ -- เรียกว่า increment/decrement operators เป็น unary operators ต้องการ operand เดียว ทั้ง prefix (++i) และ postfix (i++) ให้ผลลัพธ์เท่ากันหากใช้เดี่ยวๆ
i = 5; i++; printf("%d", i); // i = 6
i = 5; ++i; printf("%d", i); // i = 6แตกต่างกันเมื่อใช้ร่วมกับตัวดำเนินการกำหนดค่า (=) เนื่องจากลำดับความสำคัญ (precedence)
Postfix: j = i++
= มี precedence สูงกว่า postfix ++ กำหนดค่า i ให้ j ก่อน แล้วค่อยเพิ่ม i → j=5, i=6
Prefix: j = ++i
Prefix ++ มี precedence สูงกว่า = เพิ่ม i ก่อน แล้วค่อยกำหนดให้ j → i=6, 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("\nafter prefix increment i=%d j=%d", i, j);
return 0;
}ผลลัพธ์
after postfix increment i=6 j=5 after prefix increment i=6 j=6