В C с использованием XCode, как изменить цикл while, чтобы Mach первый цикл for? - PullRequest
0 голосов
/ 04 августа 2011

В C, использующем XCode, как изменить цикл while на первый цикл for?

#include <stdio.h>

int main (int argc, const char * argv[])
{
    int i;

    i = 0;
    while ( i++ < 4)
        printf ("while: i%d\n",i);

    printf ("after while  loop, i=%d\n\n", i );

    for (i = 0; i < 4; i++)
        printf ("first for: i=%d\n", i );

    printf ("after first loop, i=%d\n\n", i );

    for ( i= 1; i <=4; i++)
        printf ("second for: i=%d\n", i );

    printf ("after second loop, i=%d\n", i );

    return 0;
}

Ответы [ 3 ]

1 голос
/ 04 августа 2011
while ( i < 4)
        printf ("while: i=%d\n",i++);

сделает свое дело.++ после i - это пост-приращение, поэтому оператор printf печатает i, а затем увеличивает.

0 голосов
/ 04 августа 2011

Проблема в том, что while проверяет i = 0, i = 1, u = 2, i = 3 и i = 4. Когда это терпит неудачу, это ломается, но прежде, чем это ломается, это обновляет i еще раз, и устанавливает i в i ++ (i = 5)

Итак, вы получите

while: i0
while: i1
while: i2
while: i3
while: i4

after while  loop, i=5

Но предложение for не обновляет i после сбоя сравнения, поэтому вы получаете

first for: i=0
first for: i=1
first for: i=2
first for: i=3

after first loop, i=4

Если вы хотите сопоставить оба предложения, попробуйте увеличить i внутри while, а не в самом условии.

0 голосов
/ 04 августа 2011

Чтобы изменить while цикл на for цикл:

for (i = 1; i < 5; ++i)
    printf ("while: i%d\n",i);

Чтобы сделать while цикл печати номеров, таких как for цикл:

while ( i < 4 )
    printf ("while: i%d\n", i++);

Или альтернативно:

while ( i < 4 )
{
    printf ("while: i%d\n", i);
    ++i;
}

Прочтите о преинкременте или постинкременте, чтобы понять идею.Например, здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...