When I\'m reading the C++ standard, it seems that the following code is perfectly fine according to the standard.
int main() {
goto lol;
{
int x;
Isn't it still dangerous to jump over its definition and use uninitialized
x
?
But x
would be uninitialized anyway, because it was declared without an initializer! So the goto
might be skipping over assignment statements that set (sort-of-initialize) x
, but it's not surprising that goto
can skip over assignment statements; and the declaration itself doesn't actually do anything unless there's an initializer.
You'd use an uninitialized x
anyways, since int x;
is as uninitialized as it's going to get. The existence of an initializer makes of course a difference, because you'd be skipping it. int x = 5;
for example initializes x
, so it would make a difference if you jumped over it or not.