Those if- and switch-inits look like complicated ways to achieve an effect that can be done much more simply by having a general form of statement blocks in expressions. BCPL (the granddaddy of C) had this decades ago, e.g.
A := valof §( let B = func1() and C = func2(); resultis B + C §)
A := valof §( let B = func1() and C = func2(); resultis B + C §)
Comment