c++ - 奇怪的 C/C++ 语法

标签 c++ c gcc syntax nested

Possible Duplicate:
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) 可以正常编译和运行。这是我第一次看到这样的东西,我想知道这个语法到底是什么意思。我试过谷歌它,但我不知道这个结构叫什么。

最佳答案

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

关于c++ - 奇怪的 C/C++ 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9431735/

相关文章:

c++ - 行进立方体实现 - 网格中缺少三角形

c++ - 如何在 std::map 中找到所有具有最大值 C++ 的键?

c++ - Vector<double> C++ 的索引/最大值/最小值

c++ - 在 C 或 C++ 中解析 DER x509

c++ - 为 iPhone 构建时出现 GCC 链接器错误

linux - 静态编译glfw

c++ - 添加到 map 的类中的互斥锁不起作用c++

c - linux 2.6中的posix aio是否支持套接字文件描述符?

c - 使用信号量实现并发的线程二叉树

c - 相同的 FLT_EVAL_METHOD,GCC/Clang 中的不同结果