【问题标题】:C++ expression with brackets [duplicate]带括号的 C++ 表达式 [重复]
【发布时间】:2014-10-19 09:51:04
【问题描述】:

我发现你可以在 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");});

它是什么?从什么时候开始允许的?以及如何在右括号之前返回结果?

【问题讨论】:

    标签: c++


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-06-29
        • 2015-06-23
        • 1970-01-01
        • 2018-07-09
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 2017-01-26
        • 1970-01-01
        相关资源
        最近更新 更多