查询有关循环的初始化,条件和增量

时间:2019-03-12 09:23:39

标签: c++

我是C ++和编程语言的新手,并且正在学习有关循环的知识。现在,我研究了如果循环体内存在条件和增量,In循环将起作用:

for(int i=10;i<15;i++)

但是我在某些网站上看到了一个代码,就像这样:

for(;NULL;)
{
cout<<"hello";
}

现在,有人可以解释一下它的输出及其工作原理吗?

4 个答案:

答案 0 :(得分:4)

在C ++中,控制for循环的所有3个表达式都是可选的。这使语言功能强大。在您的情况下,您缺少初始化(通常)初始化循环计数器的表达式以及通常用于递增循环计数器的表达式。您拥有的是停止条件

如果Null具有上下文转换bool类型的内容,则程序将编译。否则就不会。让我们假设它可以做到:

如果转换后的bool值为false,则循环体将永远不会运行。

如果转换后的bool值为true,则循环主体将运行。 (请注意,转换可能可能会更改转换后的对象,因此最终会产生false,因此循环最终会终止!)

答案 1 :(得分:1)

for循环结构可以概括为以下内容。

for(initializationStatement; testExpression; updateStatement) {
    // codes 
}

在您给出的initializationStatementupdateStatement的代码示例中,它们被忽略了,即它们什么也不做。

for循环一直执行到testExpressiontrue为止。在C / C ++中,任何求值为0的表达式都是false,而任何求值其他值的表达式都是true。 Null在这种情况下大概可以转换为bool并产生false。由于testExpressionfalse,因此循环永远不会执行。

答案 2 :(得分:0)

基于条件,将执行循环,现在条件为NULL,而Null表示不存在条件,因此如果条件本身为Null,它将不接受任何内容,因此它只是从循环中跳过而不会打印任何东西。

答案 3 :(得分:0)

循环应自行运行的条件是Null。因此,for循环将不会执行。您应该至少有一个有效条件,以便for循环执行一次并打个招呼