#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 = 6
、、、b = 54
としましょうc = 12
。
a>b?(max=a, a=b, b=max):a; <-- max を 6 に設定し、次に a を 54 に設定し、次に 54=max に設定します。次に、6 と 54 を比較しますが、これは false であり、最初の数字として (6) を書き込みますか?
b>c?(max=b, b=c, c=max):a; <-- 最大値を 54、b=12、12=最大値に設定します。次に、54 と 12 を比較しますが、これは私たちの場合は true であり、c=12 を 2 番目の数値として書き込みますか?
a>b?(max=a, a=b, b=max):a; <-- 最大値を 6、a=54、54=最大値に設定します。次に、6 と 54 を比較しますが、これは false であり、再び 6 を書き込みます。wtf?
プログラム自体は正常に動作します。アルゴリズムの仕組みがよくわかりません。