Вот вопрос, над которым я задумался. Имея следующий код, можем ли мы быть уверены в его выводе?
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
?