【发布时间】:2019-05-16 05:09:03
【问题描述】:
免责声明:我不是在编写这样的代码,我知道它丑陋且不可读。
我正在生成 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不可能实现吗?
【问题讨论】:
-
发布您的实际代码会更好,也许有no need 可以使用 gnu 扩展。
-
您可以使用三元表达式而不是 if 语句。
标签: c expression ternary-operator