#include <stdio.h>
int main() {
int x = ({int a = 2; a;});
printf("%d\n", x);
}
输出:
#include <stdio.h>
int main() {
int x = ({int a = 2; a;});
printf("%d\n", x);
}
输出:
这是GCC提供的C/C++语言的一个非标准扩展,名为statement expressions。如果您尝试使用-pedantic
标志进行编译,则会收到警告“ISO C禁止在表达式中使用支撑组”。它是而不是便携式代码,应尽可能避免。
它声明称为 'A' 的局部变量,分配给它的值 '2',那么将a的值赋给x。
({ ... })
语法是该语言的GCC扩展。可以把它看作是一个块状表达式,它可以评估块中最后一条语句的值。
我和亚当在这里。不要使用它。你不知道它可能提供什么样的性能,你知道它不是可移植的,你刚刚发现它很奇怪,并且间歇性地难以辨认。 – 2010-12-16 20:40:22
看到它在编程竞赛的解决方案中使用。 – Shrey 2010-12-16 21:06:01