我不明白这个for循环是如何工作的c++
I am not understanding how this for loop is working c++
#include <iostream>
using namespace std;
int main()
{
int x = 0;
for int (i=0; i<100; i++)
if (i%9 == 0) x = i;
else x = -1;
cout << x;
return 0;
}
这段代码返回值99。
当我一行一行地读它时,我是这样理解的。- 声明一个变量x,赋值为0。
- 当i = 0, i小于100时,将i增加1。
- 如果i/9的余数等于0,将i的值赋给x。
- 如果没有设置x等于-1
- 打印x
在for循环的第一步,i被赋值为0。0除以9等于0这满足了if语句的条件那么为什么它不输出x等于0而不是99呢?
逐行
1)声明变量
x
;赋值0
#include <iostream>
int main()
{
int x=0;
}
2)对于
i = 0
,i
小于100,i
增加1。
#include <iostream>
int main()
{
int x=0;
for(int i=0; i<100; i++) {};
}
3)如果
i/9
的余数等于0,则将i
的值赋给x
。
#include <iostream>
int main()
{
int x=0;
for(int i=0; i<100; i++)
{
if(i%9==0)
{
x = i;
}
};
}
4)如果没有设置,x
应该等于-1:
#include <iostream>
int main()
{
int x=0;
for(int i=0; i<100; i++)
{
if(i%9==0)
{
x = i;
}
else
{
x = -1;
}
};
}
5)打印出x
#include <iostream>
int main()
{
int x=0;
for(int i=0; i<100; i++)
{
if(i%9==0)
{
x = i;
}
else
{
x = -1;
}
};
std::cout << x << std::endl;
}
DEMO of last one.
更多c++有趣活动的参考
worldbestlearn
维基教科书课程
输出正确。每次通过循环,x
要么获得i
的值,要么获得-1
的值。最后一次通过循环时,i == 99
和i % 9
确实是0,因此x
被赋值为99
。然后i
获取值100
,循环退出,程序的其余部分打印x
的当前值,即99
。
注意if/else
是for
循环的主体。循环不会因为i%9
在if
中为0而退出。
只有for
循环之后的单个语句在for循环中。注意,if ... else ...
是一个语句(包含其他语句)。
完全相同的代码最好写成:
int main()
{
int x = 0;
for (int i=0; i<100; i++)
{
if (i%9 == 0)
x = i;
else
x = -1;
}
cout << x;
return 0;
}
,现在应该很容易看出为什么在循环结束之前什么都不打印
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 链表c++插入,所有情况都已检查,但没有任何工作
- 当 int 方法工作正常时,void 方法有何不同,或者为什么我不能调用 void 方法?