原文網址,本文不是完全翻譯,而是自己吸收過後,在寫下此筆記
Problem
有一變數a=12,b=36,請寫出一個c function/macro,回傳3612且不使用算數運算和字串處理的函式.
Token-Pasting Operator
當擴展## macro時,##會將左右兩邊的符號(token),合併為一個符號(token).
#include <stdio.h>
#define merge(a, b) a##b
int main()
{
int a = 12;
int b = 36;
printf("%d ", merge(a, b));
}
// Output: 1234
Solution
有了Token-Pasting Operator,應該不難想出此題的解答
#include <stdio.h>
#define merge(a, b) b##a
int main()
{
int a = 12;
int b = 36;
printf("%d ", merge(a, b));
}
// Output: 3612
本文介绍了一种利用预处理器宏技巧,在不使用算数运算和字符串处理的情况下,实现两个整数连接的方法。通过Token-Pasting操作符(##)将两个整数变量拼接为一个新的整数。

466

被折叠的 条评论
为什么被折叠?



