gpt4 book ai didi

C定义函数?

转载 作者:行者123 更新时间:2023-11-30 21:17:04 25 4
gpt4 key购买 nike

我试图理解为什么这个程序打印出 8。

#define mul(x,y) (x * y)
int main() {
int x = 3;
int y = 4;
int z = 0;
z = mul(x+1, y+1);
printf(“4*5 = %d \n”, z);
}

最佳答案

<强> Macros不是函数

第一阶段编译、预处理后,宏展开:

z = mul(x+1, y+1);
// becomes
z = (x+1 * y+1);

毫无疑问,x + 1*y + 1 == 8

定义此宏的更好方法是xy 括起来:

#define mul(x, y) ((x)*(y))

您可以自己尝试一下:使用 gcc -E foo.c -o foo.i 编译此代码

#define mul(x, y) (x * y)
int x = 3;
int y = 4;
int z = mul(x+1, y+1)

并查看foo.i的内容。

关于C定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47783580/

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