gpt4 book ai didi

c - 在 C 中的不同宏中获取宏参数

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

为什么这没有给出所需的输出?对于 Ex - 取 a=1,b=2,c=3,d=4 它给出 MAX4() = 2 而在这种情况下它应该是 4。

#include<stdio.h>
#define MAX4(a,b,c,d) MAX2(MAX2(a,b),MAX2(c,d))
#define MAX2(a,b) a>b?a:b

int a,b,c,d;

int main(){

/*printf("Please enter 2 integers - \n");
scanf("%d %d",&a,&b);
printf("The maximum number among them is %d\n",MAX2(a,b));
*/
printf("Please enter 4 integers - \n");
scanf("%d %d %d %d",&a,&b,&c,&d);
printf("The maximum number among them is %d\n",MAX4(a,b,c,d));//,MAX2(a,b),MAX2(c,d));

return 0;
}

最佳答案

您需要添加括号以强制执行评估顺序:

#define MAX2(a,b) ((a)>(b)?(a):(b)) 

参数周围需要额外的括号以允许像 MAX2(a + 1, b + 2) 这样的表达式。

关于c - 在 C 中的不同宏中获取宏参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36361102/

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