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++中无体循环的一种方法 在测试过程中,我们被问到以下问题:下面的C++程序是什么?_C++ - Fatal编程技术网

C++中无体循环的一种方法 在测试过程中,我们被问到以下问题:下面的C++程序是什么?

C++中无体循环的一种方法 在测试过程中,我们被问到以下问题:下面的C++程序是什么?,c++,C++,我就是这样理解的。后来,我在源代码中输入了它,执行了代码,输出结果令人惊讶: 1 12 123 1234 12345 123456 然后我意识到问题中的内部for循环没有身体支撑。 因此,如果代码为: 这两个程序在执行方式上的主要区别是什么? 在上面的第一个for循环中,内部循环没有主体支架,会发生什么情况。? 我的老师不能给我提供太多帮助,请帮助。如果您不使用{}指定for循环的范围,它将假定一个指令范围 所以这个代码: for (int j=1;j<=6 ; j++) { fo

我就是这样理解的。后来,我在源代码中输入了它,执行了代码,输出结果令人惊讶:

1
12
123
1234
12345
123456
然后我意识到问题中的内部for循环没有身体支撑。 因此,如果代码为:

这两个程序在执行方式上的主要区别是什么? 在上面的第一个for循环中,内部循环没有主体支架,会发生什么情况。?
我的老师不能给我提供太多帮助,请帮助。

如果您不使用{}指定for循环的范围,它将假定一个指令范围

所以这个代码:

for (int j=1;j<=6 ; j++)  {
  for ( int i = 1; i<=j ; i++) 
    cout<<i ;
  cout<<endl;
} 
不管条件如何,它都能做些事情。这就是为什么我个人试图避免没有范围的if/for

希望这有帮助

for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++)
        cout<<i;
        cout<<endl;
}
相当于:

for (int j=1;j<=6 ; j++)  {
      for ( int i = 1; i<=j ; i++) {
        cout<<i ;
      }
      cout<<endl;
    } 
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++)
    {
        cout<<i;
    }
    cout<<endl;
}
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++) {
        cout<<i;
    }
    cout<<endl;
}

因此,如果缩进程序,它将如下所示:

for (int j=1;j<=6 ; j++)  
{
    for ( int i = 1; i<=j ; i++) 
        cout<<i ;
    cout<<endl;
}

这里的情况是,cout内部循环只运行直线

cout << i;
如果不为循环指定大括号,它只执行下一行。

for循环执行一条语句。现在,它可以是一个复合语句,它是大括号中的一组语句,也可以是一个单独的语句,它是一个以分号结尾的表达式

您的代码实际上具有以下形状:

for (int j=1;j<=6 ; j++)  {
   for ( int i = 1; i<=j ; i++) 
      cout<<i ;
   cout<<endl;
}

其中cout如果要删除此代码段中的大括号

for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++)
        cout<<i;
        cout<<endl;
}

从C++标准6.5次迭代语句

2迭代语句中的子语句隐式定义了 块范围3.3,每次通过 环如果迭代语句中的子语句是单个 语句而不是复合语句,就好像它被重写了一样 是包含原始语句的复合语句。[ 例如:

可以等效地重写为

while (--x >= 0) {
int i;
}

如果将while迭代语句替换为for迭代语句,则该示例具有相同的意义。

您的原始代码相当于:

for (int j=1;j<=6 ; j++)  {
      for ( int i = 1; i<=j ; i++) {
        cout<<i ;
      }
      cout<<endl;
    } 
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++)
    {
        cout<<i;
    }
    cout<<endl;
}
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++) {
        cout<<i;
    }
    cout<<endl;
}
第一种情况

将打印 1 1 12 2 123 3 1234因为不管有多少语句写在一个没有支撑的for循环中,它只会在它的块下面考虑1个语句,而在我给出之前的空间之前,我只解释了没有支撑的for循环结束了执行下一个第一个,然后终止了循环。
希望有帮助,还有什么问题吗?很乐意帮助:

要学习的课程:即使循环中只有一个语句,尤其是当它们嵌套时,也要使用大括号。现在,测试与一些愚蠢的字谜非常相似,这些字谜依赖于糟糕的表达条件。任何在现实世界中编写过这样的代码的人都应该被执行。唉,我知道有足够多的团队因为愚蠢的风格指南而被迫这样写。我最讨厌的地方是:我想指出,缩进代码很重要。不是对编译器来说,而是对读者来说。例如,对我来说,最初的代码从缩进中立即就清晰了。在你的代码片段末尾,我不得不看两遍beca使用它既不遵循任何常见的编码样式也不遵循任何常见的编码样式甚至内部一致。不要这样做!同意。我喜欢使用大括号,而不管要执行的行数。它有助于可读性。我发布的代码实际上来自某个发布的windows驱动程序。为什么microsoft驱动程序在这个示例中有如此多的错误这并不让我惊讶,那是在windows驱动程序中。嗯,不。cout@FabioTurati我认为在我的帖子中,如果去掉大括号,循环看起来会是什么样子。好吧,对不起。我被措辞弄糊涂了,而且大多数答案都集中在显示内部循环中有/没有大括号的结果,而你没有我还是觉得有点混乱,但你是对的,你的代码是正确的。
for (int j=1;j<=6 ; j++)  {
   for ( int i = 1; i<=j ; i++) 
      cout<<i ;
   cout<<endl;
}
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++)
        cout<<i;
        cout<<endl;
}
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++)
        cout<<i;
}
cout<<endl;
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++) {
        cout<<i;
    }
}
cout<<endl;
112123123412345123456
while (--x >= 0)
int i;
while (--x >= 0) {
int i;
}
for (int j=1;j<=6 ; j++)  {
    for ( int i = 1; i<=j ; i++) {
        cout<<i;
    }
    cout<<endl;
}
for(int i=1;i<=10;i++) {
    for(int j=1;j<=i;j++)
        cout<<j;
    cout<<endl;
}

for(int i=1;i<=10;i++) {
    for(int j=1;j<=i;j++) {
        cout<<j;
    }
    cout<<endl;
}
for(int i=1;i<=10;i++) {
    for(int j=1;j<=i;j++)
        cout<<j;
        cout<<" "<<i;
    cout<<endl;
}