>>15
value2は{}でくくられたブロックスコープの変数じゃなく外側のスコープの変数
その変数に代入してるんだから{}ブロックの後に参照する変数も同じ

int value2 = 20;
{
value2 = 40;
}
printf("3:value2 %d¥n",value2);

↑value2だけを見れば{}を削除しても同じ