gpt4 book ai didi

c++ - 看不懂逗号表达

转载 作者:太空狗 更新时间:2023-10-29 20:05:51 25 4
gpt4 key购买 nike

#include <iostream>
using namespace std;
int main()
{
int a, b, c, max;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"c="; cin>>c;
a>b?(max=a, a=b, b=max):a;
b>c?(max=b, b=c, c=max):a;
a>b?(max=a, a=b, b=max):a;
cout<<a<<" "<<b<<" "<<c;
}

这是一个代码,您可以在其中输入 3 个随机数,它会将它们排序。但是,我不明白这部分内容:

a>b?(max=a, a=b, b=max):a;
b>c?(max=b, b=c, c=max):a;
a>b?(max=a, a=b, b=max):a;

它是如何工作的,为什么?

假设 a = 6b = 54c = 12

  1. a>b?(max=a, a=b, b=max):a; <-- 将 max 设置为 6,然后将 a 设置为 54,然后 54=max。然后比较 6 和 54 哪个是假的,然后写一个 (6) 作为第一个数字?

  2. b>c?(max=b, b=c, c=max):a; <-- 将最大值设置为 54,b=12,12=最大值。然后将 54 与 12 进行比较,这在我们的例子中是正确的,并将 c=12 写为第二个数字?

  3. a>b?(max=a, a=b, b=max):a; <-- 将最大值设置为 6,a=54,54=最大值。然后将 6 与 54 进行比较,这是错误的并再次写入 6,wtf?

程序本身运行正常。我只是不明白该算法是如何工作的。

最佳答案

这个:

cond ? A : B

大致相当于:

if (cond) {
A;
} else {
B;
}

这个:

(X, Y, Z)

大致相当于:

X;
Y;
Z;

即依次对每个表达式进行完整求值。

使用这两个规则,您应该能够跟踪代码的执行。但是,该代码很奇怪,永远不应该那样写。所以我的建议是忽略它,并正确编写算法。

关于c++ - 看不懂逗号表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11025231/

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