gpt4 book ai didi

c - 尝试 "?:"条件 block 是否可以变得更简单

转载 作者:行者123 更新时间:2023-11-30 18:23:38 25 4
gpt4 key购买 nike

有人问我是否可以编写一段代码来查找五个数字中最大的一个,而不是使用传统的 if...else (不能使用 switch 或遍历 - 受限)我决定使用紧凑版本,但在我看来,我发现它冗长且令人困惑(首先在三个数字上尝试过):

 #include<stdio.h>

int main(void)
{
int a[3]={9,5,13};
printf("Biggest No. is: %d\n",(a[0]>
(a[1]>a[2]?a[1]:a[2])?a[0]:
(a[1]>a[2]?a[1]:a[2])));
return 0;
}

现在用这个方法对五个数字做这件事似乎是灾难性的,有什么方法可以使它变得更简单(仅通过使用 ?: 这种紧凑的方法)编写充当一个条件并再次将其写为结果似乎太多了?

或者我应该使用传统的 if ... else block 吗?

发现一件事:将宏用于一个表达式,并使用该宏作为另一次比较的条件和结果。

最佳答案

您可以使用嵌套宏来分解逻辑。

#define MAX2(a,b)       (a)>(b)?(a):(b)
#define MAX3(a,b,c) (a)>(b)? MAX2(a,c): MAX2(b,c)
#define MAX4(a,b,c,d) (a)>(b)? MAX3(a,c,d): MAX3(b,c,d)
#define MAX5(a,b,c,d,e) (a)>(b)? MAX4(a,c,d,e): MAX4(b,c,d,e)

关于c - 尝试 "?:"条件 block 是否可以变得更简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52439410/

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