奇怪的C / C ++语法

时间:2012-02-24 13:43:18

标签: c++ c gcc syntax nested

  

可能重复:
  What's this C++ syntax that puts a brace-surrounded block where an expression is expected?

我刚刚遇到这种奇怪的C / C ++语法:

#include <stdio.h>
int main() {
    printf("%s",
        ({
        static char b__[129];
        b__[0] = 55;
        b__[1] = 55;
        b__[2] = 0;
        b__;
        })
    );
}

使用gcc和g ++(4.5.2)编译并运行良好。这是我第一次看到这样的东西,我想知道这种语法究竟意味着什么。我试过谷歌,但我不知道这个结构是什么。

1 个答案:

答案 0 :(得分:27)

它们被称为statement expressions,它是GNU扩展。在您的示例中,表达式的结果为b__