Я использую программу для определения границы каждого типа данных, которая выглядит следующим образом:
#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
,, а во второй части он работает хорошо, почемуэто происходит?