ในบางปัญหา เราสามารถพบคำสั่ง 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 หลังจากนั้นจะเพิ่มค่าจาก 20 เป็น 21 ตอนนี้ให้พิมพ์อาร์กิวเมนต์ตัวที่สอง และแสดง 21 เช่นนั้น บรรทัดอื่น ๆ จะถูกคำนวณในลักษณะนี้เช่นกัน สำหรับ ++x จะเพิ่มค่าก่อนพิมพ์ และสำหรับ x++ จะพิมพ์ค่าในตอนแรก แล้วจึงเพิ่มค่า
โปรดตรวจสอบผลลัพธ์เพื่อความเข้าใจที่ดีขึ้น
ผลลัพธ์
21 20 20 20 22 21 21