ที่นี่เราจะเห็นคำถามปริศนาภาษา C หนึ่งคำถาม สมมติว่าเรามีสองตัวเลข 48 และ 96 เราต้องบวกตัวเลขแรกหลังตัวที่สอง ผลลัพธ์สุดท้ายจะเป็นเช่น 9648 แต่เราไม่สามารถใช้การดำเนินการใด ๆ ที่เกี่ยวข้องกับตรรกะ เลขคณิต สตริง และเราไม่สามารถใช้ฟังก์ชันที่กำหนดไว้ล่วงหน้าได้ แล้วเราจะทำอย่างนั้นได้อย่างไร
นี้เป็นเรื่องง่าย เราสามารถทำได้โดยใช้ตัวดำเนินการวางโทเค็น (##) ใน C ตัวดำเนินการวางโทเค็นคือตัวดำเนินการตัวประมวลผลล่วงหน้า มันส่งคำสั่งไปยังคอมไพเลอร์เพื่อเพิ่มหรือเชื่อมสองโทเค็นเป็นสตริงเดียว เราใช้ตัวดำเนินการนี้ที่คำจำกัดความของมาโคร
ตัวอย่าง
#include<stdio.h> #define MERGE(x, y) y##x main() { printf("%d", MERGE(48, 96)); }
ผลลัพธ์
9648