С выражением:
int x = x + 1;
переменная x
появляется в знаке =
, поэтому вы можете использовать ее справа.Под словом «появляется» я подразумеваю, что переменная существует, но ей еще предстоит присвоить значение инициализатором.
Однако, если вы не инициализируете переменную со статической продолжительностью хранения (например, внефункция), это неопределенное поведение, так как x
, который появляется, имеет произвольное значение.
C ++ 03 имеет это, чтобы сказать:
Точка объявления дляимя сразу после его полного декларатора (пункт 8) и до его инициализатора (если есть) ...
Пример:
int x = 12;
{ int x = x; }
Здесь второй хинициализируется своим собственным (неопределенным) значением.
Этот второй случай в значительной степени соответствует тому, что у вас есть в вашем вопросе.