++ я и я ++ в то время как цикл в C - PullRequest
0 голосов
/ 23 декабря 2019

Я использую программу для определения границы каждого типа данных, которая выглядит следующим образом:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    /*first while loop using a++ dosesn't give us a right answer*/
    int a = 0;
    while (a++ > 0);
        printf("int max first = %d\n", a-1);

    /*second while loop using ++a performs well*/
    int b = 0;
    while (++b > 0);
        printf("int max second = %d\n", b-1);

    system("pause");
    return 0;
}

После того, как я скомпилирую эту программу и выполню ее, она возвращает:

int max first = 0
int max second = 2147483647

Итак, я пытаюсь отладить его и обнаруживаю, что в первой части после a++ становится 1, затем он просто останавливает автоинкремент и переходит в цикл while ,, а во второй части он работает хорошо, почемуэто происходит?

1 Ответ

0 голосов
/ 23 декабря 2019

Первая итерация цикла - while(0 > 0), это условие ложно, поэтому цикл не выполняется, он переходит к следующему циклу, переменная a увеличивается после проверки условия, и затем выводится 1 -1, то есть 0. Второй цикл работает, потому что вы увеличиваете переменную перед проверкой условия, поэтому она запускается while(1 > 0) witch true, поэтому цикл выполняется.

...