如何解决为什么for循环输出0作为第一个数字,如果我单独写相同的for循环条件,它会输出1?
在我看来,它应该输出 1 作为第一个数字,因为变量 i 首先被初始化,然后检查条件,然后递增。当递增时,它应该输出 1 但它输出 0。为什么?
int i = 0; i < 10; ++i;
cout << i;
// Outputs 1
for (int i = 0; i < 10; ++i)
cout << i;
// Outputs 0123456789 while having 0 as first number
解决方法
int i = 0; i < 10; ++i;
cout << i;
这不是循环。它按顺序执行以下事情:
int i = 0; // sets it to 0
i < 10; // true (result is not stored)
++i; // increments to 1
cout << i;
,
在第一个示例中,语句是单独执行的。
int i = 0; i < 10; ++i; // declare variable i,do comparision and discard the result,increment i
cout << i; // print i
在第二个示例中,您必须知道 for
的工作原理。
formal syntax:
attr(optional) for ( init-statement condition(optional) ; iteration_expression(optional) ) statement
iteration_expression - 任何表达式,在循环的每次迭代之后和重新评估条件之前执行。通常,这是增加循环计数器的表达式
上述语法产生的代码等价于:
{
init_statement
while ( condition ) {
statement
iteration_expression ;
}
}
如您所见,迭代表达式 ++i
在循环体执行后 执行,其中打印了 i
。因此,i
的初始值,即 0
,在第一次迭代时打印。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。