2014-12-13 4 views
0

Я пытаюсь понять логику этого кодаЕсли заявление в случае заявления

int i = 13; 
if (i<10) if (i>=5) Console.WriteLine("Case number 1"); 
else Console.WriteLine("case number 2"); 
Console.ReadLine(); 

Так что я знаю, что это не правильный код (так как должно быть скобки, чтобы сделать это приложение работает).

Я знаю, как сделать этот код «чистый», изменяя его

Но я пытаюсь понять, как Csharp на самом деле ведет с этим erronated код, логику выполнения этого кода

Из того, что я читаю, else применяется к ближайшему, если в этом случае (если> = 5).

Так что, когда я пишу i = 3, он читает первый, если и идет к первому другому, и консоль дает мне «Случай № 2».

Когда я пишу i = 7 он читает 2-й и дает мне «Case Nr 1»

, когда я пишу i = 13 это не дает мне ничего

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

Если он проверяет только 2-й, если он должен дать мне номер дела.

Так что я определенно не так в моем образе мышления, но я не могу найти, почему он не появляется что-нибудь

+0

Он ничего не печатает, поскольку 'else' установлен в' if (i> = 5) ' – Icepickle

+0

Тогда, когда int равно 13, тогда оно должно выполнить else Console.WriteLine («case number 2»); что он не –

+0

, он не попадает туда, первый, если не удается, поэтому вы переходите непосредственно к части ReadLine – Icepickle

ответ

2

Ваш код выглядит так:

if (i < 10) 
{ 
    if (i >= 5) { 
     Console.WriteLine("Case number 1"); 
    } 
    else { 
     Console.WriteLine("case number 2"); 
    } 
} 

Console.ReadLine(); 

так что если i в [5,10) это дело номер 1, и если он находится в (-Infinity,10) это дело номер 2

Некоторые намеки:

  • рассмотрите использование некоторых известных условных условных обозначений
  • use ind чтобы сделать код более удобочитаемым
  • использовать открывающиеся и закрывающие фигурные скобки, есть ли у вас блок с одним выражением или несколькими инструкциями
  • старайтесь не иметь какой-либо магический текст в вашем коде, здесь «Случай» и «случай» есть то, что может вызвать более поздние проблемы для вас главным образом в тестовых сценариях
+1

Спасибо, спасибо за подсказки –

5

Это как ваш, если цикл работы (я indended код и добавил фигурные скобки) :

int i = 13; 
if (i<10) { 
    if (i>=5) { 
     Console.WriteLine("Case number 1"); 
    } else { 
     Console.WriteLine("case number 2"); 
} 
Console.ReadLine(); 

Так внутренняя остальное соответствует, если с условием i >= 5 Поэтому, когда ваш я = 13, он ведет себя как:

is i < 10? No 

и, следовательно, никогда не войти, если и выполняет следующий заявление, т.е.Console.ReadLine();