c语言 - 为什么宏函数不是按值调用的?


#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("%dt%dn",a,b);
    return 0;
}

印刷品: a=4,b=1

在输出中,a和b已经交换;为什么宏不是按值调用的?请帮助我解释结果。

因为宏不是函数,所以预处理器只是替换文本。宏替换后,程序将变为:

//code in stdio.h
int main(void)
{
    int a=1,b=4;
    {int t=A;A=B;B=t;}
    printf("%dt%dn",a,b);
    return 0;
}

看?交换中没有函数调用。

相关内容

  • 没有找到相关文章

最新更新