Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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++ 在循环定义中使用cin_C++ - Fatal编程技术网

C++ 在循环定义中使用cin

C++ 在循环定义中使用cin,c++,C++,我正在用for循环体中的std::cin创建一个简单的程序 #include <iostream> int main() { float a = 0; for (std::cin >> a; a >= 0;std::cin >> a) { std::cout << "\t "<<a<<"\n"; } return 0; } #包括 int main() { 浮点数a=

我正在用for循环体中的
std::cin
创建一个简单的程序

#include <iostream>

int main()
{
    float a = 0;
    for (std::cin >> a; a >= 0;std::cin >> a) {
        std::cout << "\t "<<a<<"\n";
    }
    return 0;
}
#包括
int main()
{
浮点数a=0;
对于(std::cin>>a;a>=0;std::cin>>a){

std::cout
for
不适用于这些情况。请使用
while
而不是
for

当您知道要执行循环的迭代次数或可计算时,通常使用for循环。while循环或do…while循环比for循环更合适,因为您不知道用户要执行循环的次数

这里有一些参考资料,可以提供更多关于C++中循环结构类型的差异的信息。

#包括
int main()
{
浮点数a=0;
而(a>=0){
std::cout>a;
}
返回0;
}
下面是更好的方法

#include <iostream>

int main()
{
    float a;
    do{
        std::cout << "value: ";
        std::cin >> a;
    }
    while(a>=0);

    return 0;
}
#包括
int main()
{
浮动a;
做{
std::cout>a;
}
而(a>=0);
返回0;
}

for
不适合这些情况。使用
while
而不是
for

当您知道要执行循环的迭代次数或可计算时,通常使用for循环。while循环或do…while循环比for循环更合适,因为您不知道用户要执行循环的次数

这里有一些参考资料,可以提供更多关于C++中循环结构类型的差异的信息。

#包括
int main()
{
浮点数a=0;
而(a>=0){
std::cout>a;
}
返回0;
}
下面是更好的方法

#include <iostream>

int main()
{
    float a;
    do{
        std::cout << "value: ";
        std::cin >> a;
    }
    while(a>=0);

    return 0;
}
#包括
int main()
{
浮动a;
做{
std::cout>a;
}
而(a>=0);
返回0;
}
你说得对

首先调用循环时,是否执行此代码

int i = 0
然后检查测试

i >= 0
对于每次迭代,它都会检查测试,然后检查增量部分

for (int i = 0; i >= 0;std::cin >> a) {
   //code
}
由于您将递增部分留空,a将永远打印!

您是对的

首先调用循环时,是否执行此代码

int i = 0
然后检查测试

i >= 0
对于每次迭代,它都会检查测试,然后检查增量部分

for (int i = 0; i >= 0;std::cin >> a) {
   //code
}

既然您将递增部分留空,那么a将永远打印!

我想没什么好奇怪的;省略“第三个”for循环的一部分意味着,除了循环体之外,每次迭代后都不会执行任何操作;因此,一旦通过为
a>=0
提供值进入循环,只要不改变循环体中
a
的值(和
std::cout我想没什么好奇怪的;省略“第三个”for循环的一部分意味着,除了循环体之外,每次迭代后都不会执行任何操作;因此,一旦通过为
a>=0
提供值进入循环,并且只要不改变循环体中
a
的值(以及该for循环中的
std::cout)

for(std::cin >> a; a >= 0;) 
语句
std::cin>>a
的第一个表达式在循环的第一次迭代之前只计算一次。因此变量
a
在循环中不再更改,循环将是无限的

考虑到这个循环

for (std::cin >> a; a >= 0;std::cin >> a) {
    std::cout << "\t "<<a<<"\n";
}
最好是写

for ( float a; std::cin >> a && a >= 0; ) {
    std::cout << "\t "<<a<<"\n";
}
for(float a;std::cin>>a&&a>=0;){
std::cout在这个for循环中

for(std::cin >> a; a >= 0;) 
语句
std::cin>>a
的第一个表达式在循环的第一次迭代之前只计算一次。因此变量
a
在循环中不再更改,循环将是无限的

考虑到这个循环

for (std::cin >> a; a >= 0;std::cin >> a) {
    std::cout << "\t "<<a<<"\n";
}
最好是写

for ( float a; std::cin >> a && a >= 0; ) {
    std::cout << "\t "<<a<<"\n";
}
for(float a;std::cin>>a&&a>=0;){

std::cout,因为您删除了暂停程序并等待用户输入新数字的部分。请参阅“为循环翻译”为什么不使用while循环?然后您可以在循环结束时获取用户输入并检查他们是否输入了哨兵值-如果没有,它将再次运行。当然。但我的问题是为什么
为(std::cin>>a;a>=0;)
不起作用,因为您删除了暂停程序并等待用户输入新数字的部分。请参阅“转换循环”为什么不直接使用while循环呢?然后您可以在循环结束时获取用户输入,并检查他们是否输入了sentinel值——如果没有,它将再次运行。当然可以。但我的问题是为什么
for(std::cin>>a;a>=0;)
不起作用“for不适合这些情况”--为什么不?谢谢你的回答。但我的问题是为什么(std::cin>>a;a>=0;)的
不起作用。@PaulR更新。“for不适合这些情况”--为什么不?谢谢你的回答。但我的问题是为什么(std::cin>>a;a>=0;)的
不起作用。@PaulR更新。