ใน prefix version (เช่น ++i) ค่าของ i ถูกเพิ่มขึ้น และค่าของ expression คือค่าใหม่ของ i กล่าวคือ เพิ่มก่อนแล้วค่อยกำหนดค่าให้ expression
ใน postfix version (เช่น i++) ค่าของ i ถูกเพิ่มขึ้น แต่ค่าของ expression คือค่าเดิมของ i กล่าวคือ กำหนดค่าให้ expression ก่อนแล้วค่อยเพิ่มตัวแปร
มาดูโค้ดเพื่อเข้าใจดีขึ้น -
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int x = 3, y, z;
y = x++;
z = ++x;
cout << x << ", " << y << ", " << z;
return 0;
}
ผลลัพธ์
5, 3, 5
ทำไมถึงเป็นเช่นนี้? มาดูรายละเอียด -
- Initialize x เป็น 3
- Assign y ค่าจากการ evaluate expression
x++คือ ค่าของ x ก่อนเพิ่ม แล้วค่อยเพิ่ม x - เพิ่ม x แล้ว assign z ค่าจากการ evaluate expression
++xคือ ค่าของ x หลังเพิ่ม - พิมพ์ค่าเหล่านี้