Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在变量声明中使用for循环_C++ - Fatal编程技术网

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

C++ 在变量声明中使用for循环,c++,C++,我可以在变量内使用for循环声明吗 int main() { int a = { int b = 0; for (int i = 0; i < 5; i++) { b += i; } return b; }; printf("%d", a); } intmain(){ int a={ int b=0; 对于(int i=0;i

我可以在变量内使用for循环声明吗

int main() {
    int a = {
        int b = 0;
        for (int i = 0; i < 5; i++) {
            b += i;
        }
        return b;
    };

    printf("%d", a);
}
intmain(){
int a={
int b=0;
对于(int i=0;i<5;i++){
b+=i;
}
返回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);
}

如果您需要多个范围,请使用函数代替.

实际上是由C++委员会编写的。

constexpr
有许多有用的功能尚未被发现

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);
}
constexpr int b(int l){
int b=0;
对于(int i=0;i
使用函数/lambda。谢谢!我想在
a
无符号字符x=7
)上面声明另一个变量,然后我想
返回x*b
。它告诉我
错误:无效值不会被忽略,因为它应该是
的,并且
错误:“x”没有被捕获
。您需要捕获它,例如
[x]{
但是没有代码很难说。请阅读更多关于lambdas和捕获的内容,例如,在这里或简单地用谷歌搜索这个术语,然后你会发现很多教程。非常感谢!我只是不知道这个术语。我们这里不讨论声明,甚至不讨论定义。我们讨论的是初始化,尤其是复制初始化。请看这里:。但是大量的投票和一个被接受的答案,所以一切都很好。+1从我这边开始。如果我们严格点的话:对给定问题唯一正确的答案就是:“不,不可能”
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);
}