当我们在循环条件下使用cin时会发生什么?

时间:2019-10-25 06:38:56

标签: c++ for-loop conditional-statements cin

这是以下问题的模型解决方案代码;

“输入包含T个测试用例。输入的第一行被赋予T。 每个测试用例由三行整数组成,这些行由单个空格分隔,每行由x和y坐标的三个随机点组成。浏览器视口中左上像素的坐标为(1,1),右下像素的坐标为(1000,1000)。所有坐标都位于视口内,并且每个点的位置都不同。“

这是输入示例。

2
5 5
5 7
7 5
30 20
10 10
10 20
7 7
30 10

最后两行是问题的答案。

这是我的三个问题。 1)当我们在初始化中使用cin语句时会发生什么?它接收用户在for循环的初始化中将执行的操作数。我了解此cin声明正常运行。我不明白此代码如何知道此for循环必须重复多少次。这是因为初始化后用户未对T进行任何操作。 “增加/减少”也没有作用。

2)谷歌搜索之后,我了解到条件中存在cin时,当没有更多输入或输入的类型与变量的类型不匹配时,循环结束。但是在这段代码中,当重复时间(T)结束时,for循环结束。这怎么可能发生?

3)最后,结果应在所有输入完成后呈现,而不是一一对应。那么,for循环如何记住每组(3个输入)的结果?

我不是讲英语的人。T.T谢谢您阅读我的问题。

#include<iostream>

int main()
{
int T,a,b,c,A,B,C;
for(std::cin>>T; std::cin>>a>>A>>b>>B>>c>>C; printf("%d %d\n",a^b^c,A^B^C));

}

2 个答案:

答案 0 :(得分:1)

  1.   

    在初始化中使用cin语句时会发生什么?

    for()循环的那一部分可以包含任何简单语句,而不是 只是初始化语句。该语句仅执行一次。对于 循环

    for ( init condition ; iteration ) 
       statement
    

    实际上等效于以下代码:

    {
       init
       while ( condition ) 
       {
          statement
          iteration;
       }
    }
    
  2.   

    但是在这段代码中,当重复时间(T)为   过度。这怎么可能发生?

    operator >>重载的流返回其作用的流。类 ios_base是所有流的共同父对象,包含以下内容 运算符

    std::ios_base::operator bool()

    该运算符等效于good()方法。如果>>无法从输入流中读取和解析值,则good()返回false, 循环中断。所提供的代码中未使用T。

  3.   

    然后,该for循环如何记住每个集合的结果(3   输入)?

    不是。读取每组后打印结果。

PS。在程序员之后阅读\ proof-check代码的人往往会对那些编写for()这样的循环的人怀有杀人的意图。

答案 1 :(得分:0)

  1. 如果我们使用cin语句作为初始化,则执行一次。它将接收输入并将值放在变量T中。初始化后对T无效,例如递增或递减其值。

  2. 这不是事实。重复T次后代码不会结束。只要给出(有效)输入,此for循环将继续。这是因为for循环的条件部分包含cin语句。也就是说,只要您的cin语句成功,for循环就会继续。

  3. 不能。每次循环运行时,都会覆盖变量a,A,b,B,c和C。因此,旧值将丢失。