带括号的C++表达式

C++ expression with brackets

本文关键字:C++ 表达式      更新时间:2023-10-16

我发现你可以在C++中做这样的事情:

int a = ({
    int x = 12 + 3;
    x*x + 7;
});

或者像这样:

bool x[] = {false, true, true, true, false};
if (({bool b = false; for (int i; i < 5; i++) if (x[i]) b = !b; b;}))
    printf("aaaaaaan");

然后我发现我不能做这样的事情:

int a = ({if (2 > 1) return x; x*x;});

也不是

int a = ({if (2 > 1) x; x*x;});

也不是

int a = ({x; if (1 > 2) printf("aaaan");});

它是什么?什么时候开始允许了?如何在结束括号之前返回结果?

这是一个语言扩展。请参阅语句表达式。不要使用它。

这是一个语言扩展,不是标准C++。