пропуск последней части цикла for в c

#c #for-loop

#c #for-цикл

Вопрос:

Являются ли эти два мира кода эквивалентными?

 for(int i=0; i<10; i  ){
        //some thing
}
 

и

 for(int i=0;   i<10; ){
        //some thing
}
 

если они совпадают, какой из них более стандартен для использования?

Комментарии:

1. Вы также можете запустить оба этих цикла и распечатать i , посмотреть, выполняет ли он то же самое и выполняет ли одинаковое количество шагов. Я думаю, что этого не произойдет.

2. Один из них — стандартный цикл от 0 до 9, другой — от 1 до 9, я полагаю. Проблема заключается в части «я верю». Люди знают, как читать первое, второе непонятно. Вы пишете свой код не только для компилятора, но и для других людей. Придерживайтесь первого стиля, если у вас нет очень веской причины не делать этого.

3. Средняя операция (тест) выполняется перед первым циклом, но последняя часть (приращение) — нет. Итак, они разные.

Ответ №1:

Я бы не стал писать это как for(int i = 0; i < 10; ) , и i отличается от i из-за порядка операций. i увеличивает i , затем «возвращает» его, i «возвращает» i , затем увеличивает его.

Ответ №2:

Нет, это не одно и то же. Вы должны быть осведомлены о работе приращения префикса и приращения постфикса.

Во втором случае, на первой итерации цикла for, переменная ‘i’ будет иметь значение 1, но в первом случае переменная ‘i’ будет иметь значение 0 и так далее.

Поэтому второй цикл будет выполняться только 9 раз, тогда как первый цикл будет выполняться 10 раз

Ответ №3:

Нет, это не одно и то же, но если вы напишете это так :

for(int i=0; i<10; ){ //some_thing i ; }

это то же самое