奇怪的C/C++语法

Strange C/C++ syntax

本文关键字:C++ 语法      更新时间:2023-10-16

可能重复:
把一个大括号包围的块放在需要表达式的地方的C++语法是什么?

我刚刚遇到一个奇怪的C/C++语法:

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

这是我第一次看到这样的东西,我想知道这个语法到底是什么意思。我试过用谷歌搜索它,但我不知道这个结构叫什么。

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