Есть два эквивалентных (на мой неопытный взгляд) кода: В первом случае переменная задается и ей присваивается значение вне цикла: В таком случае программа компилируется верно и без ошибок. Во втором же случае переменная создается и значение ей присваивается уже внутри цикла: В таком случае вылетает ошибка. Я не совсем понимаю в связи с чем так происходит, ведь переменная x так же задается внутри цикла, но не вызывает такой ситуации. Так же интересует почему программа не компилируется в случае, если переменная создается вне цикла, но значение ей присваивается уже внутри цикла с условием if.