Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ปริศนาการเขียนโปรแกรมภาษาซี?


ที่นี่เราจะเห็นคำถามปริศนาภาษา C หนึ่งคำถาม สมมติว่าเรามีสองตัวเลข 48 และ 96 เราต้องบวกตัวเลขแรกหลังตัวที่สอง ผลลัพธ์สุดท้ายจะเป็นเช่น 9648 แต่เราไม่สามารถใช้การดำเนินการใด ๆ ที่เกี่ยวข้องกับตรรกะ เลขคณิต สตริง และเราไม่สามารถใช้ฟังก์ชันที่กำหนดไว้ล่วงหน้าได้ แล้วเราจะทำอย่างนั้นได้อย่างไร

นี้เป็นเรื่องง่าย เราสามารถทำได้โดยใช้ตัวดำเนินการวางโทเค็น (##) ใน C ตัวดำเนินการวางโทเค็นคือตัวดำเนินการตัวประมวลผลล่วงหน้า มันส่งคำสั่งไปยังคอมไพเลอร์เพื่อเพิ่มหรือเชื่อมสองโทเค็นเป็นสตริงเดียว เราใช้ตัวดำเนินการนี้ที่คำจำกัดความของมาโคร

ตัวอย่าง

#include<stdio.h>
#define MERGE(x, y) y##x
main() {
   printf("%d", MERGE(48, 96));
}

ผลลัพธ์

9648