Являются ли переменные, объявленные в циклах, видимыми для остального кода?

Я читал эту книгу, и в ней говорилось: Переменные, объявленные в области видимости, не видны вне ее.

Также было сказано: Области действия объявляются двумя фигурными скобками — как блок кода.

Итак, если бы у меня была такая ситуация:

for(_statement1_)
{
  int var;
  /*code*/
}
cout << var << " number of rockets left.\n";

Будет ли напечатанное значение таким же, как значение var, объявленное в цикле?

Спасибо


person Anitej Banerjee    schedule 24.02.2014    source источник
comment
Это будет ошибка компилятора. var не объявлен во внешней области.   -  person juanchopanza    schedule 24.02.2014
comment
Хорошо. Так что, если вы могли бы написать это как ответ, я объявлю вопрос ответом.   -  person Anitej Banerjee    schedule 24.02.2014
comment
Я передам. Это слишком тривиально, чтобы на него можно было ответить, и я уверен, что есть дубликаты.   -  person juanchopanza    schedule 24.02.2014
comment
Вы могли бы просто попробовать вместо того, чтобы задавать вопрос.   -  person Csq    schedule 24.02.2014
comment
@Csq Я далеко от своего компьютера   -  person Anitej Banerjee    schedule 24.02.2014
comment
@AnitejBanerjee: Но очевидно, что вы каким-то образом подключены к Интернету. Попробуйте следующее: ideone.com См.: ideone.com/HSwjwU   -  person Csq    schedule 24.02.2014
comment
@Csq Привет! Спасибо :) Действительно ценю это :)   -  person Anitej Banerjee    schedule 27.02.2014


Ответы (3)


Как говорится в вашей книге, переменная находится внутри блока цикла и не видна за его пределами.

Ваш код не скомпилируется, если не будет другой переменной var вне области действия цикла. Если есть, то последний оператор будет использовать его, а не тот, что в цикле, который сейчас выходит за рамки.

person Mike Seymour    schedule 24.02.2014

Нет, вы не можете использовать эту переменную вне цикла. var виден только внутри цикла.

person Chethan N    schedule 24.02.2014
comment
Вы хотели написать can't, верно? - person Anitej Banerjee; 24.02.2014
comment
да, сначала опечатка!! - person Chethan N; 24.02.2014

Это будет ошибка компилятора, поскольку область действия var ограничена только внутри цикла for.

person Subhajit    schedule 24.02.2014