这段代码是如何工作的?

时间:2010-12-16 20:26:39

标签: c++ syntax

  

可能重复:
  Return value from local scope?

#include <stdio.h>

int main() {
        int x = ({int a = 2; a;});
        printf("%d\n", x);
}

输出: 2

3 个答案:

答案 0 :(得分:15)

这是GCC提供的名为statement expressions的C / C ++语言的非标准扩展。如果您尝试使用-pedantic标志进行编译,则会收到警告“ISO C禁止表达式中的支撑组”。它是可移植代码,应尽可能避免使用。

答案 1 :(得分:2)

({ ... })语法是该语言的GCC扩展。可以把它想象成一个类似于块的表达式,它计算出块中最后一个语句的值。

答案 2 :(得分:1)

它声明一个名为'a'的局部变量,为其赋值'2'然后将值赋给x。