这段代码是如何工作的?

Shr*_*rey 3 c++ syntax

可能重复:
从本地范围返回值?

#include <stdio.h>

int main() {
        int x = ({int a = 2; a;});
        printf("%d\n", x);
}
Run Code Online (Sandbox Code Playgroud)

输出:2

Ada*_*eld 15

它是GCC提供的C/C++语言的非标准扩展,称为语句表达式.如果您尝试使用该-pedantic标志进行编译,您将收到警告"ISO C禁止在表达式中使用支撑组".它不是可移植代码,应尽可能避免使用.

  • 我在这里和亚当在一起.不要使用它.你不知道它可能提供什么样的性能,你知道它不可移植,而你刚刚发现它很奇怪而且间歇性地难以辨认. (2认同)