Вот какой вопрос я задавал. Учитывая следующий код, можем ли мы быть уверены в его выходе?
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;
}
Гарантируется ли вывод finished: 10
в соответствии со стандартом С++? Или компилятор может занять регистр, в котором a
хранится в goto
до места до a
?