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);


}



原作者:
...