Ответ 1
Может быть, это должен быть комментарий, но я не могу выразить код inline:
Только две переменные имеют длительность внутри тела цикла. я объявляется до начала цикла и продолжается до последнего выполнения цикла. Другими словами, c и d строятся/разрушаются 3 раза; после третьего раза они разрушаются, тогда я.
Таким образом, цикл for, который вы написали, эквивалентен:
{
int i = 0;
while (i < 3)
{
a = 2;
int c = 1;
int d = 3;
d = a + c;
}
i++;
}
Дополнительный набор фигурных скобок вызывает обзор области; я выходит за пределы области действия и уничтожается вне тела цикла for, но перед любым последующим кодом.