gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:05 25 4
gpt4 key购买 nike

#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已经交换;为什么宏不是按值调用?请帮助我解释结果。

最佳答案

因为宏不是函数,预处理器只是替换了文本。宏替换后,你的程序变成:

//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;
}

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

关于c - 为什么宏函数不是按值调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com