Following code compiles on my gcc 5.4.0, doesn't generate any warnings and works fine:
if (a == 0) {
puts("0");
} else switch (a) {
case 1: puts("1"); break;
case 2: puts("2"); break;
default: puts("default"); break;
}
Is if ... else switch ... correct statement?