Ну
#include <stdio.h>
int main() {
int result = 0; /* here *OUTER* result gets the value 0 */
while(result <= 0) /* THIS MAKES THE While to execute forever */
{
int result = (getchar() != EOF); /* THIS VARIABLE IS ***NOT*** THE outside result variable */
result = 2; /* external block result is not visible here so this assign goes to the above inner result */
printf("x");
/* INNER result CEASES TO EXIST HERE */
}
printf("out\n");
}
Как вы можете вычесть из комментариев, переменная result
, которая сравнивается в тесте while
, является внешней, в то время как внутренняя скрывает внешнюю, ей нельзя присвоить в теле цикл, так что цикл работает вечно. Вы получаете бесконечную строку x
s, напечатанную на stdout
.