Because that line is never reached. When C hits a switch(a)
statement, it branches to the case
that matches the condition of the variable you're switching on. The statement that initialises b
isn't in any of the cases. I suppose the compiler is free to write 20
into the location, but the language doesn't require it to do so and in this case it doesn't: it's also free to leave initialisation until it actually executes an assignment.