Отказ от ответственности: я не пишу такой код, я знаю, что он ужасен и нечитаем.
Я генерирую C, и мне нужно, чтобы все было в одном выражении.
Это работает:
#define true 1
int a = (true) ? ( (true) ? (puts("a"), puts("b"), 1) : (2) ) : (3);
printf("%d\n", a);
a
b
1
Но мне также нужны заявления, а не только выражения. Это не компилируется:
int a = (true) ? ( (true) ? (puts("a"), puts("b"), (if (true) puts("c");), 1) : (2) ) : (3);
error: expected expression
Разве невозможно достичь в C?