gpt4 book ai didi

c++ - C++中的无限循环

转载 作者:行者123 更新时间:2023-12-04 14:31:46 27 4
gpt4 key购买 nike

我正在玩 for 循环,尝试了以下代码并获得了无限循环。

#include<iostream>

int main(){
int i {0};
bool condition = i < 5;
for ( ; condition ; ){
std::cout << "Hello World!" << std::endl;
i++;
}
}
有人可以解释为什么吗?

最佳答案

bool condition = i < 5;
这一行定义了一个名为 condition 的变量其值为 true从这条线开始。
它不会从右侧绑定(bind)表达式,而只是在赋值时复制结果。
你想要的更复杂:
auto condition = [&i](){ return i < 5; };
for ( ; condition() ; )
现在 condition是一个可以重复计算的函数对象。
赋值的右边称为 lambda 表达式,格式为 [capture scope](parameters){ body with return statement } .
在捕获范围中,您可以按值(不带 & )列出变量,在这种情况下,当声明 lambda 时它们会被复制一次,或者按引用(带前导 & )在这种情况下它们不会被复制但是 lambda 内部的变量是对 lambda 外部同名变量的引用。还有一个简短的形式 [&]它通过引用捕获父作用域中的所有变量,以及 [=]它按值捕获所有内容。 auto可用于组合声明 + 赋值中的简洁,并从右侧自动解析变量的类型。
您可以明确指定的最接近的兼容类型是 std::function<bool(void)> (具有该签名的函数的通用容器),该对象的实际类型是一些内部类型,表示您无法明确编写的裸 lambda。因此,如果您不知道确切的类型,并且不想使用通用容器类型, auto有时甚至是必要的。

关于c++ - C++中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69927137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com