программирование 101 оператора if / else - PullRequest
1 голос
/ 16 февраля 2012

Это, пожалуй, самый простой вопрос, который вы можете найти в stackoverflow, но я бы хотел избавиться от этой путаницы из моей головы раз и навсегда.Рассмотрим следующий оператор if:

if(x > 0)
{
    echo 'Inside if';
}
// apparently there is a hidden else here....

echo 'This comes after if';

А теперь рассмотрим следующий:

if(x > 0)
{
    echo 'Inside if';
}
else
{
    echo 'Inside else';
}

echo 'This comes after if/else';

В первом примере, если условие оценивается как true, будет напечатано «Inside if», но не будет ли напечатано и то, что будет после if («Это после if»)?Я имею в виду, у меня нет возврата внутри моего if, поэтому код должен продолжаться нормально, верно?То же самое относится ко второму оператору if, все, что придет после оператора, будет напечатано, потому что выполнение кода будет продолжаться нормально.Действительно ли после оператора if есть еще виртуальный объект, если мы не определяем его явно?Я имею в виду, что если то, что следует после моего оператора if, напечатано независимо от того, оценивается ли условие как истинное или нет, то после моего if на самом деле нет другого виртуального.Кроме того, когда Else абсолютно необходимо в выражении if-then-else вместо того, чтобы просто полагаться на «виртуальное другое», как в первом примере?Пожалуйста, пролите немного света на это.

Спасибо

Ответы [ 5 ]

5 голосов
/ 16 февраля 2012

else "абсолютно необходимо" всякий раз, когда вы действительно хотите что-то сделать, если условие if оценивается как false. Если вы хотите что-то сделать только в том случае, если это правда, и абсолютно ничего, когда это ложно, вы можете пропустить часть else.

0 голосов
/ 16 февраля 2012

Допустим, X = 1 Результат первого примера:

Внутри, если Это происходит после того, как

Второй пример результата:

Внутри, если Это происходит после if / else


Допустим, X = -1 Результат первого примера:

Это происходит после того, как

Второй пример результата:

Внутри остальное Это происходит после if / else


Нет виртуального оператора else, вы должны явно включить оператор else.

0 голосов
/ 16 февраля 2012

Разница между «виртуальным остальным» и остальным состоит в том, что виртуальное остальное всегда выполняется, тогда как действительное остальное выполняется только условно. Например, учтите, что это:

if(x > 0)
{
    echo 'Inside if';
}
else
{
    echo 'Inside else';
}

echo 'This comes after if/else';

точно так же, как это:

if(x > 0)
{
    echo 'Inside if';
}
if(x <= 0)
{
    echo 'Inside else';
}
if(x == x)
{
    echo 'This comes after if/else';
}

Ваше «виртуальное другое» на самом деле вовсе не является другим, оно всегда выполняется.

0 голосов
/ 16 февраля 2012

Простой пример, где вам нужно ELSE:

IF (loadfile == True)
{
    println("file loaded...on to processing...");
}
ELSE
{
    :: raise an error and stop execution ::
}

:: continue with processing file ::
0 голосов
/ 16 февраля 2012

В действительности нет скрытого еще.Условный оператор - это способ временно приостановить процедурное выполнение вашего кода.После завершения он продолжится с того места, где остановился, если вы, например, не выполните возврат из функции.

...