Перейти к определению переменной - что происходит с ее значением?

Вот вопрос, над которым я задумался. Имея следующий код, можем ли мы быть уверены в его выводе?

void f() {
  int i = 0; 
  z: if(i == 1) goto x; else goto u; 
  int a; 
  x: if(a == 10) goto y; 
  u: a = 10; i = 1; goto z; 
  y: std::cout << "finished: " << a; 
}

Гарантируется ли вывод завершено: 10 в соответствии со стандартом C ++? Или компилятор может занять регистр, в котором хранится a , когда goto до места до a ?

17
задан Matthieu M. 22 July 2011 в 14:07
поделиться