簡體   English   中英

在變量聲明中使用 for 循環

[英]Using for loop inside declaration of variable

我可以在聲明變量時使用 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);
}

如果您需要在多個范圍內使用它,請改用函數。

實際上已經由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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM