1
#include<stdio.h>
#define exch(A,B) {int t=A;A=B;B=t;}
int main(void)
{
    int a=1,b=4;
    exch(a,b);
    printf("%d\t%d\n",a,b);
    return 0;
}

版画:a=4,b=1

出力では、a と b が交換されています。マクロが値によって呼び出されないのはなぜですか? 結果を説明して助けてください。

4

1 に答える 1

6

マクロは関数ではないため、プリプロセッサはテキストを置き換えるだけです。マクロ置換後、プログラムは次のようになります。

//code in stdio.h

int main(void)
{
    int a=1,b=4;
    {int t=A;A=B;B=t;}
    printf("%d\t%d\n",a,b);
    return 0;
}

見る?スワッピングには関数呼び出しはありません。

于 2014-03-01T01:35:50.960 に答える