这个语法叫什么?它是标准的C吗?它是标准C++吗?

这个语法叫什么?它是标准的C吗?它是标准C++吗?,c++,c,cross-platform,C++,C,Cross Platform,x将是21岁。这是什么语法?我在C中见过它,我猜它也存在于C++中。这是两种语言中的标准吗?这是一种非标准语言,允许在表达式上下文中执行任意代码并生成表达式结果。这是一种非标准语言,这可以让任意代码在表达式上下文中执行并生成表达式结果。这既不是也不是:我检查了是否遗漏了一些奇异的东西,但我没有。这是一个gcc扩展。即使有了扩展,我也看不到它将如何编译,因为z超出了它的使用范围。@SamVarshavchik确实很有趣,想添加一个答案吗?这既不是也不是:我检查了是否遗漏了一些异国情调的东西,但我没

x将是21岁。这是什么语法?我在C中见过它,我猜它也存在于C++中。这是两种语言中的标准吗?

这是一种非标准语言,允许在表达式上下文中执行任意代码并生成表达式结果。

这是一种非标准语言,这可以让任意代码在表达式上下文中执行并生成表达式结果。

这既不是也不是:我检查了是否遗漏了一些奇异的东西,但我没有。这是一个gcc扩展。即使有了扩展,我也看不到它将如何编译,因为z超出了它的使用范围。@SamVarshavchik确实很有趣,想添加一个答案吗?这既不是也不是:我检查了是否遗漏了一些异国情调的东西,但我没有。这是一个gcc扩展。即使有了这个扩展,我也不知道它将如何编译,因为z超出了它的使用范围。@SamVarshavchik确实很有趣,想补充一个答案吗?我甚至怀疑这个扩展是否允许使用范围外的变量。是的,这部分是正确的。但是,总的语法是这样的。事实上,去掉-pedantic并用z解决问题,gcc和g++中的抱怨都消失了:我怀疑即使是这个扩展也会允许使用范围外的变量。是的,这部分是正确的。但是,总的语法是这样的。事实上,去掉-pedantic并用z解决问题,这些抱怨在gcc和g++中都消失了:
int x = ({
    int y = 10, z;
    if (2>1) {
        z = 11;
    }
    y+z;
});