A C Programming Language Pule

原文網址,本文不是完全翻譯,而是自己吸收過後,在寫下此筆記

Problem

有一變數a=12,b=36,請寫出一個c function/macro,回傳3612且不使用算數運算和字串處理的函式.

Token-Pasting Operator

當擴展## macro時,## 會將左右兩邊的符號(token),合併為一個符號(token).

# include 
# 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 
# define merge(a, b) b## a
int main()
{
    int a = 12;
    int b = 36;
    printf("%d ", merge(a, b));
}
// Output: 3612

Reference

  1. https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

  2. https://msdn.microsoft.com/en-us/library/09dwwt6y.aspx

关键字:c, #c++#

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部