为什么else后需要有一个";"(分号)?

#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
    double a,b,c,t;
    cin>>a>>b>>c;
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    else if(a>c)
    {
        t=a;
        a=c;
        c=t;
    }
    else (b>c);
    {
        t=b;
        b=c;
        c=t;
    }
    cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<" "<<b<<" "<<c<<endl;
}

加上分号就是说下面{}里的东西不是if else语句中的内容了。但是你这个排序的逻辑有问题。
参考如下:


#include <iostream>
using namespace std;

int main()
{
    double a,b,c,max,min;
    cin>>a>>b>>c;

    max = a>(b>c?b:c)?a:(b>c?b:c);
    min = a<(b<c?b:c)?a:(b<c?b:c);
    b = a+b+c-max-min; //中间值
    a = min; //最小值
    c = max; //最大值
    
    cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<" "<<b<<" "<<c<<endl;
    return 0;
}