如果else语句有效但逻辑似乎有缺陷.请解释?

-3 c++ if-statement

这是我为一个任务找到的程序,它应该找到3个数字的最小值和最大值.当我以这种方式运行程序时,该程序可以工作,但是我无法遵循原因的逻辑.

#include <iostream>
using namespace std;

int main() 
{

    double num1 = 0, num2 = 0, num3 = 0, max = 0, min = 0;


    cout << "CMPSC 201-Lab4 " << endl << "Find max and min among 3 numbers" << endl;
    cout << "Please enter 3 numbers seperated by a space: ";
    cin >> num1 >> num2 >> num3;

    min = num1;
    if (num2 < min)
    {
        min = num2;
    }
    else
    {
        min = num3;
    }

    max = num1;
    if (num2 > max)
    {
        max = num2;
    }
    else
    {
        max = num3;
    }

    cout << endl; 
    cout << "The smallest number among (" << num1 << "," << num2 << "," << num3 << ",";//Outputs the numbers entered and displays min
    cout << ") is " << min << endl;
    cout << "The largest number among (" << num1 << "," << num2 << "," << num3 << ",";//Outputs the numbers entered and displays max
    cout << ") is " << max << endl;

    return 0;
Run Code Online (Sandbox Code Playgroud)

下面是该程序的代码.我想到的方法是将三个数字中的第一个设置为min,然后使用if语句根据其他数字的值更改min变量.这适用于不同顺序的3个数字的任意组合.

我看到的一个问题是,如果该语句为真,那么min将为数字2,因为if-else的第一部分将执行.但是说数字3更小它将如何成为自那部分if-else以来的min不会发生.如果代码是if-else,那么这将是有意义的,但事实并非如此.

因此,我没有看到某些东西,或者确实如此以某种方式使它成为if-else if语句.对不起,如果这令人困惑我不知道如何更好地说出来.

fre*_*low 5

min = num1;
if (num2 < min)
{
    min = num2;
}
else
{
    min = num3;
}
Run Code Online (Sandbox Code Playgroud)

这不可行,因为min永远不会num1; 它立即被要么覆盖num2num3.

一个if语句为控制流程提供了两个选择,这是不够的.由于这是一个练习,我会让其他人自己弄清楚;)