การทำงานของ printf กับตัวดำเนินการ ++
ในบางโจทย์อาจพบคำสั่ง printf() ที่มีตัวดำเนินการ ++ อยู่ในพารามิเตอร์ ในข้อสอบแข่งขันมักมีคำถามประเภทนี้เพื่อทายผลลัพธ์ ในส่วนนี้เราจะดูตัวอย่างและพยายามหาคำตอบ
ตัวอย่างโค้ด
#include <stdio.h>
int main() {
volatile int x = 20;
printf("%d %d\n", x, x++);
x = 20;
printf("%d %d\n", x++, x);
x = 20;
printf("%d %d %d ", x, x++, ++x);
return 0;
}
คอมไพเลอร์ส่วนใหญ่จะประมวลผลพารามิเตอร์ของ printf() จากขวาไปซ้าย ดังนั้นใน printf() แรก พารามิเตอร์สุดท้ายคือ x++ จะทำงานก่อน พิมพ์ 20 แล้วเพิ่มเป็น 21 ต่อมาพิมพ์พารามิเตอร์ก่อนหน้า แสดง 21 สำหรับ ++x จะเพิ่มค่าก่อนพิมพ์ ส่วน x++ จะพิมพ์ค่าก่อนแล้วค่อยเพิ่ม
ผลลัพธ์
21 20 20 20 22 21 21