在 GNU 模式下,在查看逗号表达式和 ?:
结构时对构成左值的内容的定义较为宽松。
可以使用复合表达式、条件表达式和类型转换,如下所示:
-
可以指定复合表达式:
(a++, b) += x;
这相当于:
temp = (a++,b);
b = temp + x
-
可以获取复合表达式 &(a, b)
的地址。 这相当于 (a,
&b)
。
-
可以使用条件表达式,例如:
(a ? b : c) = a;
这会选取 b
或 c
作为目标,具体取决于 a
。
仅在 C90 和 C99 的 GNU 模式下支持。