for(i=0;i++<10;)
{
printf("%d\n",i);
}
Почему печать с 1 по 10?C Программирование приращения и декремента
Я знаю, что после инкремента происходит после цикла, так почему же он не показывает 0? И почему он показывает 10?
for(i=0;i++<10;)
{
printf("%d\n",i);
}
Почему печать с 1 по 10?C Программирование приращения и декремента
Я знаю, что после инкремента происходит после цикла, так почему же он не показывает 0? И почему он показывает 10?
Давайте маркировать элементы цикл:
for(/* 1 */ i=0; /* 2 */ i++<10; /* 4 */)
{
/* 3 */ printf("%d\n",i);
}
Вот как вещи играть:
i
Инициализировано 0
;i++
по сравнению с 10
; как побочный эффект этого выражения, i
увеличивается на 1
;i
;Этапы с 2 по 4 повторяются до тех пор, пока i++ < 10
не примет значение false.
Итак, когда i ++ = 10, условие является ложным (i ++ <10). Тогда почему он печатает обновленное значение i как 10? – azmain
@AIN: Помните, что выражение 'i ++' оценивается значением * current * 'i', а в качестве * побочного эффекта * добавляется 1 к' i'. Итак, представьте себе 'i' значение' 9'. В выражении 'i ++ <10',' i ++ 'оценивается как' 9', поэтому условие истинно и тело цикла выполняется. Однако после того, как выражение было оценено, 'i' теперь имеет значение' 10', и это то, что распечатывается. Поэтому выходные данные варьируются от «1» до «10». –
@AIN: Другим способом написания этого будет 'for (i = 0; i <10;) {i ++; printf ("% d \ n", i); } ' –
источник изображения с http://www.programiz.com/c-programming/ c-for-loop –
И в этом случае это шаг «тестового выражения», который увеличивает i. – immibis
yes .. 'test expression' делает приращение –
Я думаю, что вы ищете является do..while
i=0;
do{
printf("%d\n",i);
}while(i++<10);
Спасибо, но в соответствии с вашим циклом do..while он печатает от 0 до 10. И мне нужно знать о пояснении цикла. @Pamblam – azmain
_ «Как я знаю, приращение после события происходит после цикла» _ Нет. Приращение происходит после _statement_. 'i ++ <10' - это один оператор. –
Возможный дубликат [Операторы приращения/уменьшения] [http://stackoverflow.com/questions/21717247/c-increment-decrement-operators) –