C++ 将范围分配给C+中的变量+;

C++ 将范围分配给C+中的变量+;,c++,gcc,C++,Gcc,看看这个代码,有人能解释一下为什么a+1分配给b #include <iostream> int main(int argc, char *argv[]) { int a = 5; int b = ({ std::cout << "inside scope" << std::endl; a+1; }); std::cout << "b value: " << b; } #包括 int ma

看看这个代码,有人能解释一下为什么
a+1分配给
b

#include <iostream>

int main(int argc, char *argv[])
{
  int a = 5;

  int b = ({
      std::cout << "inside scope" << std::endl;
      a+1;
  });

  std::cout << "b value: " << b;
}
#包括
int main(int argc,char*argv[])
{
INTA=5;
int b=({

std::cout范围的值是范围内的最后一条语句,因此在本例中

b=a+1=5+1=6

我不建议像这样编写代码,它不是很清楚

它是一个名为语句表达式的GCC扩展,因此不使用它的另一个很好的理由是因为它不可移植。GCC返回一个警告:

<代码>警告:ISO C++禁止表达式中的括号组[ Wpedantic ] /代码>

< P>结构< /P>
int b = ({
    std::cout << "inside scope" << std::endl;
    a+1;
    });
intb=({

std::难道这是一个。嗯,至少有一个。谢谢你完整的回答
int b = (
    std::cout << "not inside scope" << std::endl,
    a+1
    );
int b = [&](){
    double bah = 3.14;
    std::cout << "inside scope" << std::endl;
    return a+!!bah;
    }();