这是一个非常基本的问题,我可能会对此感到困惑,但是如果我有一个for循环:
for (int i = 0; i < n; i++)
cout << " " << i;
现在,假设n = 3。
i = 0,i <3,i = 0 + 1 = 1
i = 1,i <3,i = 1 + 1 = 2
i = 2,i <3,i = 2 +1 = 3
i = 3,i <3(假)
因此程序终止并输出0,1,2,3(我知道这是错误的,但是它不应该显示所有这些值,因为当i = 2时,它满足条件,而现在i = 3,所以程序也应该输出3?
对不起,如果这是一个愚蠢的问题。
答案 0 :(得分:0)
语句for (A; B; C) D;
大致等同于:
{
A;
while (B)
{
D;
C;
}
}
请注意,在执行循环中的语句之前已检查条件。请注意,在执行该语句之后立即检查条件,并且在再次运行该语句之前还要检查条件。
因此您的示例从不输出i = 3
,因为当i
为3时,条件为false,并且条件总是在执行循环语句之前被检查。
我个人的建议是避免对if
语句变得机灵。了解诸如i != 0
,i < n
,i <= n
之类的条件以及其他一些条件,并且在这些简单情况下,仅使用if
语句。否则,很可能有人会错误地读取代码。