Дима Соколов: { ... ;} - говорит о завершении последней строчки в блоке { ... }
{ ... }; - говорит о заверении целого блока кода, иногда это нужно, гуглите "почему после фигурных скобок ставится точка с запятой".
Ваша проблема в том что вы фундаментально не понимаете что { ... } - это цельная структура, ВСЕ синтаксические элементы (т.е. все знаки или сочетания знаков (типа "if", "+", "==", ";") и т.д.) НЕ МОГУТ выбраться за пределы этих скобок и НЕ МОГУТ влиять на что-либо внешнее. Так понятно?
В вашем случае { ... ;} - точка с запятой находится внутри { ... } и значит действуют на код ВНУТРИ.
{ ... }; - точка с запятой находится СНАРУЖИ и действует СНАРУЖИ. Т.е. говорит компилятору разделить блок { ... } с тем что идет дальше. Зачем это нужно, я уже говорил погуглить.
Уж не знаю как еще объяснить...