欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

你知道C語(yǔ)言中#和##表示的意義嗎

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

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

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

##用于連接2個(gè)標(biāo)識(shí)符。

1.#

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

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

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

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

#define CONVERT(a) #a

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

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

在預(yù)處理之后,test_convert就會(huì)轉(zhuǎn)換成相應(yīng)的字符串,即"test_convert"。沒(méi)錯(cuò)!直接把標(biāo)識(shí)符作為文本轉(zhuǎn)換成字符串!也就是說(shuō),上面2條語(yǔ)句會(huì)轉(zhuǎn)換成這樣:

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

屏幕上就會(huì)打印出test_convert這個(gè)字符串。

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

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

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

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

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

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

2.##

##是用來(lái)連接2個(gè)標(biāo)識(shí)符的。比如下面這個(gè)宏:

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

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

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

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

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

所以會(huì)輸出20。

3.總結(jié)

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

2.##可以連接2個(gè)標(biāo)識(shí)符。對(duì)于宏#define CAT(a, b) a##b,就是字面意思的把a(bǔ)和b的名字連起來(lái),成為一個(gè)新的名字ab。比如CAT(num, 5)就會(huì)合成一個(gè)新的名字num5。

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

相關(guān)文章

  • C++筆記-設(shè)置cout輸出數(shù)據(jù)的寬度和填充方式

    C++筆記-設(shè)置cout輸出數(shù)據(jù)的寬度和填充方式

    這篇文章主要介紹了C++筆記-設(shè)置cout輸出數(shù)據(jù)的寬度和填充方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++小游戲教程之猜數(shù)游戲的實(shí)現(xiàn)

    C++小游戲教程之猜數(shù)游戲的實(shí)現(xiàn)

    這篇文章主要和大家詳細(xì)介紹如何利用C++做一個(gè)簡(jiǎn)易的猜數(shù)游戲,分為用戶猜數(shù)和系統(tǒng)猜數(shù)。文中的示例代碼講解詳細(xì) ,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • 基于C/C++將派生類賦值給基類的超詳細(xì)講解

    基于C/C++將派生類賦值給基類的超詳細(xì)講解

    類其實(shí)也是一種數(shù)據(jù)類型,也可以發(fā)生數(shù)據(jù)類型轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于基于C/C++將派生類賦值給基類的超詳細(xì)講解,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • FFmpeg中AVIOContext的使用方法詳解

    FFmpeg中AVIOContext的使用方法詳解

    AVIOContext是FFMPEG管理輸入輸出數(shù)據(jù)的結(jié)構(gòu)體,這篇文章主要為大家詳細(xì)介紹了這個(gè)結(jié)構(gòu)體的具體使用,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-08-08
  • C++實(shí)現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字)

    C++實(shí)現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(12.整數(shù)轉(zhuǎn)化成羅馬數(shù)字),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++中地圖按鍵排序?qū)崿F(xiàn)示例

    C++中地圖按鍵排序?qū)崿F(xiàn)示例

    這篇文章主要為大家介紹了C++中地圖按鍵排序?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • fcntl函數(shù)的使用詳解

    fcntl函數(shù)的使用詳解

    本篇文章是對(duì)fcntl函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 利用stream實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http下載器

    利用stream實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http下載器

    這篇文章主要介紹了利用stream實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http下載器的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • C++中模板和STL介紹詳解

    C++中模板和STL介紹詳解

    今天小編就為大家分享一篇關(guān)于C++模板和STL的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2021-09-09
  • 淺談關(guān)于指針作為參數(shù)并改變它的值的問(wèn)題

    淺談關(guān)于指針作為參數(shù)并改變它的值的問(wèn)題

    這篇文章介紹了關(guān)于指針作為參數(shù)并改變它的值的問(wèn)題,有需要的朋友可以參考一下
    2013-10-10

最新評(píng)論