第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C宏和括號(hào)中的參數(shù)使用

C宏和括號(hào)中的參數(shù)使用

C
牧羊人nacy 2019-07-31 10:13:43
C宏和括號(hào)中的參數(shù)使用例#define Echo(a)  a #define Echo(a) (a)我意識(shí)到這里可能沒有顯著差異,但為什么你想要a在宏體內(nèi)包括括號(hào)內(nèi)?它是如何改變它的?
查看完整描述

2 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

假設(shè)你有

#define mul(x, y)  x * y

如果我說:

mul(a + 5, 6); /* a + 5 * 6 */

現(xiàn)在,如果我輕松改變宏:

#define mul(x, y)  ((x) * (y))mul(a + 5, 6); /* ((a + 5) * (6)) */

請(qǐng)記住,不會(huì)評(píng)估參數(shù)或任何內(nèi)容,只會(huì)執(zhí)行文本替換。

編輯

有關(guān)在括號(hào)中包含整個(gè)宏的說明,請(qǐng)參閱Nate CK發(fā)布的鏈接。


查看完整回答
反對(duì) 回復(fù) 2019-07-31
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

僅僅為了記錄,我從這里登陸如何在使用宏時(shí)修復(fù)數(shù)學(xué)錯(cuò)誤,我將嘗試在此處擴(kuò)展此答案以適應(yīng)其他人。

你在詢問有關(guān)的區(qū)別:

#define Echo( a )  a#define Echo( a ) ( a )

只要你不了解自己的宏(我也不是專家:)這是好的。

首先,您已經(jīng)(可能)知道存在運(yùn)算符優(yōu)先級(jí),因此這兩個(gè)程序存在巨大差異:

1):

#include <stdio.h>#define ADD( a , b ) a + bint main( void ){
    auto const int a = 5;
    auto const int b = 10;

    auto const int c = ADD (  2 + a ,  2 + b );
    printf( "%d", c );
    return 0;}

輸出:

19

和:

#include <stdio.h>#define ADD( a , b ) ( a ) + ( b )int main( void ){
    auto const int a = 5;
    auto const int b = 10;

    auto const int c = ADD ( a , b );
    printf( "%d", c );
    return 0;}

輸出:

15

現(xiàn)在,讓我們preplace +*

#define ADD( a, b ) a * b

編譯器對(duì)待a * b例如a == 5,b == 10哪個(gè)做5 * 10。

但是,當(dāng)你說: ADD ( 2 + a * 5 + b ) 喜歡這里:

#include <stdio.h>#define ADD( a , b ) ( a ) * ( b )int main( void ){
    auto const int a = 5;
    auto const int b = 10;

    auto const int c = ADD ( 2 + a , 5 + b );
    printf( "%d", c );
    return 0;}

你得到105,因?yàn)樯婕斑\(yùn)營(yíng)商優(yōu)先權(quán)并對(duì)待

2 + b * 5 + a

( 2 + 5 ) * ( 5 + 10 )

是的

( 7 ) *  ( 15 ) == 105

但是當(dāng)你這樣做時(shí):

#include <stdio.h>#define ADD( a, b ) a * bint main( void ){
    auto const int a = 5;
    auto const int b = 10;

    auto const int c = ADD ( 2 + a , 5 + b );
    printf( "%d", c );
    return 0;}

你得到的37是因?yàn)?/p>

 2 + 5 * 5 + 10

意思是:

2 + ( 5 * 5 ) + 10

意思是:

2 + 25 + 10

簡(jiǎn)短的回答,有一個(gè)很大的區(qū)別:

#define ADD( a , b ) a * b

#define ADD( a , b ) ( a ) * ( a )


查看完整回答
反對(duì) 回復(fù) 2019-07-31
  • 2 回答
  • 0 關(guān)注
  • 536 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)