最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

你知道C語言中#和##表示的意義嗎

 更新時間:2023年04月07日 08:59:48   作者:努力學(xué)習(xí)游泳的魚  
如標題,這篇文章會講解C語言中的#和##是啥意思。我相信,大部分朋友應(yīng)該都沒怎么用過,這兩個玩意的使用條件也相當(dāng)苛刻,快跟隨小編一起來看看吧

如標題,這篇文章會講解C語言中的#和##是啥意思。我相信,大部分朋友應(yīng)該都沒怎么用過,這兩個玩意的使用條件相當(dāng)苛刻。

#用于把一個宏參數(shù)直接轉(zhuǎn)換為相應(yīng)的字符串。

##用于連接2個標識符。

1.#

先做一個小鋪墊。C語言中允許把一個字符串拆成2個字符串。比如,下面2條語句是等價的。

printf("Hello, world!!!\n");
printf("Hello, ""world!!!\n");

也就是說,可以把"Hello, world!!!\n"拆成"Hello, “和"world!!!\n”。

而#可以把一個宏參數(shù)直接轉(zhuǎn)換成相應(yīng)的字符串。比如有下面這個宏:

#define CONVERT(a) #a

如果在某個地方這樣調(diào)用:

int test_convert = 10;
printf(CONVERT(test_convert));

在預(yù)處理之后,test_convert就會轉(zhuǎn)換成相應(yīng)的字符串,即"test_convert"。沒錯!直接把標識符作為文本轉(zhuǎn)換成字符串!也就是說,上面2條語句會轉(zhuǎn)換成這樣:

int test_convert = 10;
printf("test_convert");

屏幕上就會打印出test_convert這個字符串。

那么,假設(shè)有這么一個宏:

#define PRINT_MESSEGE(data, format) \
        printf("The value of "#data" is "format".\n", data)

就很有意思了。結(jié)合上面的講解,你猜猜下面的調(diào)用會輸出什么?

int i = 10;
PRINT_MESSEGE(i, "%d");

double d = 3.14;
PRINT_MESSEGE(d, "%lf");

以PRINT_MESSEGE(i, "%d");為例。宏的第一個參數(shù)就是i,第二個參數(shù)就是"%d",具體就會替換成:printf("The value of ""i"" is ""%d"".\n", i)。根據(jù)前面講解的字符串可以拆分的知識,這幾個小的字符串也可以合并,就等價于:printf("The value of i is %d.\n", i)。所以輸出結(jié)果就是:

2.##

##是用來連接2個標識符的。比如下面這個宏:

#define CAT(a, b) a##b

下面的代碼就很有意思了:

int num5 = 20;
printf("%d\n", CAT(num, 5));

解釋一下,a##b就是字面意思的把a和b連起來。比如,CAT(num, 5)就會被替換成num5,所以上面的2條語句就會被替換成:

int num5 = 20;
printf("%d\n", num5);

所以會輸出20。

3.總結(jié)

1.#可以把對應(yīng)的宏參數(shù)的文本直接替換成完全一模一樣的字符串。比如#define CONVERT(name) #name這個宏,就會把變量a替換成字符串"a",變量num替換成字符串"num"。

2.##可以連接2個標識符。對于宏#define CAT(a, b) a##b,就是字面意思的把a和b的名字連起來,成為一個新的名字ab。比如CAT(num, 5)就會合成一個新的名字num5。

到此這篇關(guān)于你知道C語言中#和##表示的意義嗎的文章就介紹到這了,更多相關(guān)C語言# ##內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • opencv幀差法找出相差大的圖像

    opencv幀差法找出相差大的圖像

    這篇文章主要為大家詳細介紹了opencv幀差法找出相差大的圖像,包含訪問mat的像素值,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言簡明清晰講解枚舉

    C語言簡明清晰講解枚舉

    枚舉法的本質(zhì)就是從所有候選答案中去搜索正確的解,枚舉算法簡單粗暴,他暴力的枚舉所有可能,盡可能地嘗試所有的方法,感興趣的朋友來看看吧
    2022-05-05
  • c++中std::placeholders的使用方法

    c++中std::placeholders的使用方法

    std::placeholders?是 C++ 標準庫中的一個工具,用于在函數(shù)對象綁定時創(chuàng)建占位符,本文就來詳細的介紹一下,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • MFC Frame-Splitter模型實例原理解析

    MFC Frame-Splitter模型實例原理解析

    這篇文章主要介紹了MFC Frame-Splitter模型實例原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 深入剖析C語言中qsort函數(shù)的實現(xiàn)原理

    深入剖析C語言中qsort函數(shù)的實現(xiàn)原理

    這篇文章主要介紹了C語言中qsort函數(shù)的實現(xiàn)原理,本文將從回調(diào)函數(shù),qsort函數(shù)的應(yīng)用,qsort函數(shù)的實現(xiàn)原理三個方面進行講解,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-03-03
  • C++基礎(chǔ)之this指針與另一種“多態(tài)”

    C++基礎(chǔ)之this指針與另一種“多態(tài)”

    this指針識別了同一個類的不同的對象,換句話說,this指針使得成員函數(shù)可以訪問同一個類的不同對象。再深入一點,this指針使得成員函數(shù)會因為this指針的不同而訪問到了不同的成員變量
    2013-07-07
  • C++實現(xiàn)中值濾波的示例代碼

    C++實現(xiàn)中值濾波的示例代碼

    本文主要介紹了C++實現(xiàn)中值濾波的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語言 冒泡排序算法詳解及實例

    C語言 冒泡排序算法詳解及實例

    這篇文章主要介紹了C語言 冒泡排序算法詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • C++ stringstream格式化輸出輸入詳情

    C++ stringstream格式化輸出輸入詳情

    這篇文章主要介紹了C++ stringstream格式化輸出輸入,首先string str; cin>>str;遇到空格結(jié)束;于是乎產(chǎn)生了getline(),可與得到一行字符串;空格自動去掉,下面來看看文章的詳細內(nèi)容,需要的小伙伴可以參考一下
    2021-11-11
  • C++ auto類型說明符

    C++ auto類型說明符

    在C++11中引入了auto類型說明符,用它就能讓編譯器替我們?nèi)シ治霰磉_式所屬的類型。當(dāng)然,auto變量必須有初始值,這樣編譯器才能推斷其類型
    2016-03-03

最新評論

长治县| 马龙县| 马鞍山市| 石棉县| 高唐县| 佛学| 渝中区| 镇江市| 华宁县| 广西| 庆云县| 达尔| 金湖县| 潼南县| 徐闻县| 璧山县| 西林县| 沧州市| 叶城县| 营口市| 南汇区| 抚顺县| 盐山县| 积石山| 安康市| 三台县| 高要市| 固始县| 始兴县| 翁牛特旗| 平遥县| 晋中市| 巴马| 巧家县| 新昌县| 莎车县| 商丘市| 盘锦市| 阿瓦提县| 苍梧县| 抚顺市|