c++ - c+ + - 在变量声明中使用for循环

可不可以在声明变量内部使用for循环?


int main() {


 int a = {


 int b = 0;


 for (int i = 0; i < 5; i++) {


 b += i;


 }


 return b;


 };



 printf("%d", a);


}



时间: 原作者:

可以使用lambda:


int main() {


 int a = []{


 int b = 0;


 for (int i = 0; i < 5; i++) {


 b += i;


 }


 return b;


 }();



 printf("%d", a);


}



需要注意的是,必须立即执行它否则存储lambda,

如果你打算为多个实例化重用lambda,可以像这样单独存储它:


int main() {


 auto doCalculation = []{


 int b = 0;


 for (int i = 0; i < 5; i++) {


 b += i;


 }


 return b;


 };



 int a = doCalculation();



 printf("%d", a);


}



如果在多个作用域中需要它,请使用函数。

原作者:



constexpr int b(int l) {


 int b=0;


 for (int i = 0; i < l; i++)


 b += i;


 return b;


 }



int main() {



 constexpr int a = b(5);



 printf("%d", a);


}



原作者:
...