带括号的C ++表达式

时间:2014-10-19 09:51:05

标签: c++

我发现你可以在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("aaaaaaa\n");

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

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

,也不

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

,也不

int a = ({x; if (1 > 2) printf("aaaa\n");});

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

2 个答案:

答案 0 :(得分:1)

这是一种语言扩展。见Statement Exprs。不要使用它。

答案 1 :(得分:0)

这是一种语言扩展,它不是标准的C ++。