Как объяснялось ранее, если вы определите переменную внутри цикла for
int x; x = 10;
, она создаст новую переменную, доступ к которой возможен только внутри цикла for
.
То есть, когда вы создаете переменную x
в main
, затем создайте переменную x
в цикле for
, вы в настоящее время отсылаете печать printf("%d", x);
к первому x
, объявленному в main
, и именно поэтому она печатает 0. Этопотому что вы инициировали его на 0
в строке int x = 0, i;
, и он никогда не менялся.На самом деле вы никогда не печатали x
, который вы инициировали в цикле for
.
Но когда вы удаляете int x;
из цикла for
, остается только один инициализированный x
, и вы изменилизначение от x
до 10
внутри цикла.Когда вы печатаете x
, это дает вам 10
, то есть значение, которое было присвоено ему внутри цикла for
.
Надеюсь, это не сбивает с толку.