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

淺談關(guān)于C語言中#define的副作用

 更新時(shí)間:2019年03月08日 10:45:22   作者:liam2199  
這篇文章主要介紹了關(guān)于C語言中#define的副作用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

MFC雖然沒有未來,但是我覺得MFC的思想還是有必要研究研究的,在MFC中或者一些底層代碼的編寫中,宏是相當(dāng)好用的,為什么呢?因?yàn)楹曛皇呛唵蔚奶鎿Q,不進(jìn)行類型轉(zhuǎn)換,替換就意味著靈活,而C語言編程的靈魂就是靈活啊。

但是在高級(jí)語言中,甚至C++中,是提倡用const的,不提倡用#define,因?yàn)?define有一定的副作用,玩不好就沒命了。
這里我們討論下#define的副作用。

# include <stdio.h>
# include <stdlib.h>
# define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))
int main(void)
{
 int a = 5;
 int b = 0;
 CALL_WITH_MAX(++a,b);
 CALL_WITH_MAX(++a,b+20);
 return 0;
}

分析:
上面的問題,不知道大家有沒有看出來。
對(duì)于CALL_WITH_MAX(++a,b);

1、a首先加1 ,變成了6

2、再和b進(jìn)行比較,結(jié)果是a大,最后返回的結(jié)果是(++a),又被加1 ,最后的結(jié)果是7

 對(duì)于CALL_WITH_MAX(++a,b+20);

1、a首先加1 ,變成了8
2、再和b進(jìn)行比較,結(jié)果是a大,最后返回的結(jié)果是b,此時(shí)的b為20,那么a只加了一次,a的結(jié)果是8

# include <stdio.h>
# include <stdlib.h>
# define CALL_WITH_MAX(a,b) f((a) > (b) ? (a):(b))
void f(int x)
{
 printf("compare result = %d\n",x); 
}
int main(void)
{
 int a = 5;
 int b = 0;
 printf("Initial value a = %d\n",a);
 CALL_WITH_MAX(++a,b);
 printf("excute the first a = %d\n\n",a);
 printf("Initial value a = %d\n",a);
 CALL_WITH_MAX(++a,b+20);
 printf("excute the second a = %d\n\n",a);
  
 return 0;
}

結(jié)果分析如下:

以上所述是小編給大家介紹的關(guān)于C語言中#define的副作用詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C語言實(shí)現(xiàn)ATM自動(dòng)取款機(jī)系統(tǒng)的示例代碼

    C語言實(shí)現(xiàn)ATM自動(dòng)取款機(jī)系統(tǒng)的示例代碼

    ATM自動(dòng)取款機(jī)系統(tǒng)是銀行業(yè)務(wù)流程中十分重要且必備的環(huán)節(jié)之一,在銀行業(yè)務(wù)流程中起著承上啟下的作用。本文將用C語言實(shí)現(xiàn)一個(gè)簡單的ATM自動(dòng)取款機(jī)系統(tǒng),需要的可以參考一下
    2022-08-08
  • Qt控件之QLabel用法及技巧

    Qt控件之QLabel用法及技巧

    QLabel是Qt中的一個(gè)控件類,用于顯示文本或圖像的控件類之一,本文主要介紹了Qt控件之QLabel用法及技巧,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • C語言制作貪吃蛇小游戲

    C語言制作貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言制作貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C語言JNI的動(dòng)態(tài)注冊(cè)詳解

    C語言JNI的動(dòng)態(tài)注冊(cè)詳解

    這篇文章主要介紹了JAVA JNI的動(dòng)態(tài)注冊(cè),這里提供簡單實(shí)例代碼,需要的朋友可以參考下,小編覺得寫的還不錯(cuò),希望能給你帶來幫助
    2021-08-08
  • C語言的冒泡排序和快速排序算法使用實(shí)例

    C語言的冒泡排序和快速排序算法使用實(shí)例

    這篇文章主要介紹了C語言的冒泡排序和快速排序算法使用實(shí)例,示例題目也是ACM練習(xí)當(dāng)中的基礎(chǔ)習(xí)題,需要的朋友可以參考下
    2015-08-08
  • C++實(shí)現(xiàn)批量提取PDF內(nèi)容

    C++實(shí)現(xiàn)批量提取PDF內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何使用C++批量提取PDF里文字內(nèi)容并導(dǎo)出到表格以及批量給?PDF?文件改名,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • 詳解C++中類的六大默認(rèn)成員函數(shù)

    詳解C++中類的六大默認(rèn)成員函數(shù)

    這篇文章主要介紹了C++類中的六大默認(rèn)成員函數(shù)的原理雨使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • C++關(guān)于指針,繼承和多態(tài)介紹

    C++關(guān)于指針,繼承和多態(tài)介紹

    大家好,本篇文章主要講的是C++關(guān)于指針,繼承和多態(tài)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 基于C++實(shí)現(xiàn)的哈夫曼編碼解碼操作示例

    基于C++實(shí)現(xiàn)的哈夫曼編碼解碼操作示例

    這篇文章主要介紹了基于C++實(shí)現(xiàn)的哈夫曼編碼解碼操作,結(jié)合實(shí)例形式分析了C++實(shí)現(xiàn)的哈夫曼編碼解碼相關(guān)定義與使用技巧,需要的朋友可以參考下
    2018-04-04
  • linux c 獲得當(dāng)前進(jìn)程的進(jìn)程名和執(zhí)行路徑(示例)

    linux c 獲得當(dāng)前進(jìn)程的進(jìn)程名和執(zhí)行路徑(示例)

    如何得到當(dāng)前進(jìn)程的進(jìn)程名和執(zhí)行路徑。寫了個(gè)程序分享一下
    2013-07-07

最新評(píng)論

凤台县| 桑植县| 嘉禾县| 克山县| 沁水县| 马边| 阜城县| 马边| 闽侯县| 拉萨市| 宜君县| 孝昌县| 威海市| 沙湾县| 蛟河市| 博客| 郴州市| 崇阳县| 新宁县| 葵青区| 苗栗市| 吉安县| 衡阳市| 禹城市| 郑州市| 海盐县| 德格县| 遂昌县| 封开县| 清河县| 阿克陶县| 清流县| 西和县| 永善县| 万盛区| 当涂县| 佛学| 永顺县| 三都| 连城县| 昭苏县|