Если ваша переменная является частью первого цикла for:
for(int x = 0; 10 > x; ++x)
{
}
for(; 20 > x; ++x)
{
}
, то для стандарта 'x' даже не определено для второго цикла, и код не будет компилироваться. Обратите внимание, что некоторые старые компиляторы не следуют стандарту в этой точке и будут вести себя как в следующем примере.
Если переменная определена вне первого цикла for:
int x = 0;
for(; 10 > x; ++x)
{
}
for(; 20 > x; ++x)
{
}
thenкогда второй цикл введен, 'x' будет иметь значение, которое он имел во время окончания первого цикла. Ни в коем случае 'x' не будет повторно инициализировано вторым циклом или не получит какое-либо другое случайное значение. Он будет иметь значение, полученное в конце первого цикла, или приведет к ошибке компиляции.