Как предотвратить запуск кода оператора if при обработке первого if-else? - PullRequest
0 голосов
/ 03 мая 2018

У меня три утверждения if-else. Примерно так:

int Group1 = 1;
int Group2 = 3;
int Group3 = 6;
if (Group1 < Group2 && Group1 < Group3)
{
    Group1 += 5;
}
else if (Group2 < Group1 && Group2 < Group3)
{
    Group2 += 5;
}
else
{
    Group3 += 5;
}

Теперь я полагаю, что приведенный выше код пройдет первый оператор if, так как Group1 наименьший, но затем значение изменится на второй, если также будет обработан. Как остановиться на первом операторе if и выйти из цикла, когда найдено наименьшее целое число в группе? или может я ошибаюсь и только сначала, если будет вычисляться выписка?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

if операторы принимают логическое выражение. В этом случае не имеет значения, какое выражение является только результирующим значением, полученным путем вычисления выражения. Все, что вам действительно нужно, - это создать минимальный, компилируемый пример . Другими словами, удалите шум, созданный всей этой логической логикой. Как только вы добавите этот навык в свой набор инструментов, вы сможете сами начать отвечать на эти и даже более сложные вопросы.

    void Main()
    {
        bool first = true;
        bool second = false;
        if(first){
            second = true;
            Console.WriteLine("One true");
        }else if(second){
            Console.WriteLine("Two trues");
        }else{
            //more like default, but you don't see this which is what matters
            Console.WriteLine("Three trues");
        }
    }

//Result:  One True
0 голосов
/ 03 мая 2018

Только первый оператор if будет оценен.

Здесь нет петли; только набор условностей. Поскольку вы использовали else if, этот блок может быть введен только , если оригинал if оценен как ложный. Если вместо этого вы написали

if (Group1 < Group2 && Group1 < Group3)
{
    Group1 += 5;
} 
// No else
if (Group2 < Group1 && Group2 < Group3)
{

Тогда оба будут выполнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...