2015-08-26 4 views
-5

В программе для печати hello:Почему для (1; 2; 3) бесконечный цикл?

for (1; 2; 3) 
printf ("Hello"); 

Почему выход показать его бесконечный цикл? Разве только for (; ;) бесконечный цикл?

+12

Поскольку любое число, отличное от нуля, считается 'true' для логических операций. Итак, второй операнд в цикле for - это не число '2', а всегда логическое выражение' true'. –

+2

@ user5268195> Нет, вы не захотите, или вы не останетесь здесь долго. Поддержание качества SO - это бизнес каждого члена сообщества. –

+6

Хотя это может быть не очень хороший или интересный вопрос, это правильный вопрос в отношении политик SO. Быть грубым, однако, не в порядке. – Lundin

ответ

4

В C все ненулевые целые числа считаются истинными. Итак, здесь

for (1; 2; 3) 

2 - отличное от нуля целое число, и поэтому он представляет собой бесконечный цикл. И да,

for (; ;) 

также представляет собой бесконечный цикл.

2

for остановится, как только второй оператор оценит значение 0. (В этом контексте пустой оператор считает ненулевым).

Ваш никогда не делает. for(1; 2; 3), for(; 2;), и for(;;) не остановится.

5

Хм, вы правы. В C для структуры

for (initialization; condition; increment/decrement) 

Таким образом, в вашем коде, for (1; 2; 3) здесь в состоянии части (то есть. Средний) является non-zero (ie. 2) и, с всегда верно. Вот почему ваш код всегда получает true и infinite loop.

В соответствии с определением в infinite LoopFor Loop:

Когда условное выражение отсутствует, то предполагается, чтобы быть правдой. У вас может быть выражение инициализации и инкремента, но программисты C чаще используют конструкцию for (;;) для обозначения бесконечного цикла .

Для лучшего понимания, вы можете следить за For Looop

+0

@ user5268195 Если вам это нравится, вы должны принять этот ответ. Это также поможет вам. –

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