gpt4 book ai didi

c - 该程序的输出是什么以及如何输出?

转载 作者:行者123 更新时间:2023-11-30 20:58:53 24 4
gpt4 key购买 nike

#include<stdio.h>
#define ABS(a,b) \
do { \
(a>0) ? b = a : (b = -a); \
return b; \
}while(0) \

int main()
{
int a = -2, b;
ABS(a,b);
printf("a=%d b=%d\n", a, b);
}

我无法理解它的输出。请解释。谢谢

最佳答案

这不会产生任何输出。对于宏,定义的代码将替换宏调用,产生以下程序:

int main()
{
int a = -2, b;

do {
(a>0) ? b = a : (b = -a);
return b;
}while(0)

printf("a=%d b=%d\n", a, b);
}

如您所见,代码将在到达 printf() 之前返回

如果您想修复此问题,以便将 b 设置为 a 的绝对值:

#define ABS(a,b) ((a)>0) ? ((b) = (a)) : ((b) = -(a))


int main()
{
int a = -2, b;
ABS(a, b);
printf("a=%d b=%d\n", a, b);
}

输出:

a=-2 b=2

最好始终将宏参数放在括号内,以防它们是可能具有特定操作顺序要求的更复杂的值。

关于c - 该程序的输出是什么以及如何输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232638/

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