2012-04-07 1 views
0

Был упражнение в моей книге, которая попросила меня написать для петли, эквивалентной:Каковы способы пропустить использование && in для оператора условия?

for(i=0;(i<4) && (i<5);i++) 

, но без использования && и || оператора.

Я придумал решение, как это:

for (i=0;;i++) 
     if((i<4)) 
      if((i<5)) 
       printf("Works!!!\n"); 
      else 
       break; 
     else 
      break; 

Он работает. Поскольку я новичок в C, я хочу знать, есть ли лучшее решение, чем это.

Заранее спасибо.

+6

У вас не хватает простой один: 'для (I = 0; я <4; я ++)' –

ответ

8

Ваш && объединяет два условия, так что один является логически более слабым по отношению к другому. Если целое число меньше 4, оно обязательно меньше 5. Таким образом, (i<4) && (i<5) можно просто заменить на (i<4).

0

Заметка о стиле: рекомендуется всегда использовать фигурные скобки с вложенными ifs, по крайней мере для внешних, особенно с отсутствующими elses. Это не будет делать то, что вы намеревались сделать:

if (Cond1) 
    if (Cond2) 
     DoSomething; 
else 
    DoSomethingElse; 

Компилятор видит, что остальное принадлежит Cond2. Это не оставляет места для неправильного толкования:

if (Cond1) 
{ 
    if (Cond2) 
    { 
     DoSomething; 
    } 
} 
else 
{ 
    DoSomethingElse; 
} 
+0

Даже редактор (если это какой-нибудь хорошее, как Vim) увидит, что это неправильно; когда вы выделяете блок и reindent, он фиксирует отступ, чтобы показать вам реальный смысл. – Kaz

+1

Я не согласен с добавлением всего этого вертикального беспорядка для простого кода. if (cond) {if (cond2) DoSomething; } else {DoSomethingElse; }. Если одно предложение требует фиксации, обычно приятно скреплять и другое. Если они являются однопользовательскими заданиями, оставьте фиксацию. – Kaz

 Смежные вопросы

  • Нет связанных вопросов^_^