C++没这么难——(5) 好玩的判断和循环之一for循环

有的时候我们需要写一个功能,需要实现软件在运行的时候能够根据情况选择要执行哪些代码。这时候就需要用到 循环 了.

开始

先看一段代码

#include <iostream>
int main(int argc,char*argv[]){
	for(int i = 0;i<200;i++){
		std::cout << i <<std::endl;
	}
	return 0;
}

运行它,会发现它输出了0到199这些数字.
看起来很简单。你会发现它多了个for开头的语句。这叫for循环,也就是计次循环。

那么它到底有啥用呢?
我们来看看如果没有这个for语句, 你要怎么写

#include <iostream>
int main(int argc,char*argv[]){
	std::cout << 0 <<std::endl;
	std::cout << 1 <<std::endl;
    std::cout << 2 <<std::endl;
    std::cout << 3 <<std::endl;
    std::cout << 4 <<std::endl;
    std::cout << 5 <<std::endl;
    std::cout << 6 <<std::endl;
    std::cout << 7 <<std::endl;
    std::cout << 8 <<std::endl;
    std::cout << 9 <<std::endl;
    std::cout << 10 <<std::endl;
    std::cout << 11 <<std::endl;
    std::cout << 12 <<std::endl;
    std::cout << 13 <<std::endl;
    std::cout << 14 <<std::endl;
    std::cout << 15 <<std::endl;
    std::cout << 16 <<std::endl;
    std::cout << 17 <<std::endl;
    std::cout << 18 <<std::endl;
    std::cout << 19 <<std::endl;
    std::cout << 20 <<std::endl;
    std::cout << 21 <<std::endl;
    std::cout << 22 <<std::endl;
    std::cout << 23 <<std::endl;
    std::cout << 24 <<std::endl;
    std::cout << 25 <<std::endl;
    std::cout << 26 <<std::endl;
    std::cout << 27 <<std::endl;
    std::cout << 28 <<std::endl;
    std::cout << 29 <<std::endl;
    std::cout << 30 <<std::endl;
    std::cout << 31 <<std::endl;
    std::cout << 32 <<std::endl;
    std::cout << 33 <<std::endl;
    std::cout << 34 <<std::endl;
    std::cout << 35 <<std::endl;
    std::cout << 36 <<std::endl;
    std::cout << 37 <<std::endl;
    std::cout << 38 <<std::endl;
    std::cout << 39 <<std::endl;
    std::cout << 40 <<std::endl;
    std::cout << 41 <<std::endl;
    std::cout << 42 <<std::endl;
    std::cout << 43 <<std::endl;
    std::cout << 44 <<std::endl;
    std::cout << 45 <<std::endl;
    std::cout << 46 <<std::endl;
    std::cout << 47 <<std::endl;
    std::cout << 48 <<std::endl;
    std::cout << 49 <<std::endl;
    std::cout << 50 <<std::endl;
    std::cout << 51 <<std::endl;
    std::cout << 52 <<std::endl;
    std::cout << 53 <<std::endl;
    std::cout << 54 <<std::endl;
    std::cout << 55 <<std::endl;
    std::cout << 56 <<std::endl;
    std::cout << 57 <<std::endl;
    std::cout << 58 <<std::endl;
    std::cout << 59 <<std::endl;
    std::cout << 60 <<std::endl;
    std::cout << 61 <<std::endl;
    std::cout << 62 <<std::endl;
    std::cout << 63 <<std::endl;
    std::cout << 64 <<std::endl;
    std::cout << 65 <<std::endl;
    std::cout << 66 <<std::endl;
    std::cout << 67 <<std::endl;
    std::cout << 68 <<std::endl;
    std::cout << 69 <<std::endl;
    std::cout << 70 <<std::endl;
    std::cout << 71 <<std::endl;
    std::cout << 72 <<std::endl;
    std::cout << 73 <<std::endl;
    std::cout << 74 <<std::endl;
    std::cout << 75 <<std::endl;
    std::cout << 76 <<std::endl;
    std::cout << 77 <<std::endl;
    std::cout << 78 <<std::endl;
    std::cout << 79 <<std::endl;
    std::cout << 80 <<std::endl;
    std::cout << 81 <<std::endl;
    std::cout << 82 <<std::endl;
    std::cout << 83 <<std::endl;
    std::cout << 84 <<std::endl;
    std::cout << 85 <<std::endl;
    std::cout << 86 <<std::endl;
    std::cout << 87 <<std::endl;
    std::cout << 88 <<std::endl;
    std::cout << 89 <<std::endl;
    std::cout << 90 <<std::endl;
    std::cout << 91 <<std::endl;
    std::cout << 92 <<std::endl;
    std::cout << 93 <<std::endl;
    std::cout << 94 <<std::endl;
    std::cout << 95 <<std::endl;
    std::cout << 96 <<std::endl;
    std::cout << 97 <<std::endl;
    std::cout << 98 <<std::endl;
    std::cout << 99 <<std::endl;
    std::cout << 100 <<std::endl;
    std::cout << 101 <<std::endl;
    std::cout << 102 <<std::endl;
    std::cout << 103 <<std::endl;
    std::cout << 104 <<std::endl;
    std::cout << 105 <<std::endl;
    std::cout << 106 <<std::endl;
    std::cout << 107 <<std::endl;
    std::cout << 108 <<std::endl;
    std::cout << 109 <<std::endl;
    std::cout << 110 <<std::endl;
    std::cout << 111 <<std::endl;
    std::cout << 112 <<std::endl;
    std::cout << 113 <<std::endl;
    std::cout << 114 <<std::endl;
    std::cout << 115 <<std::endl;
    std::cout << 116 <<std::endl;
    std::cout << 117 <<std::endl;
    std::cout << 118 <<std::endl;
    std::cout << 119 <<std::endl;
    std::cout << 120 <<std::endl;
    std::cout << 121 <<std::endl;
    std::cout << 122 <<std::endl;
    std::cout << 123 <<std::endl;
    std::cout << 124 <<std::endl;
    std::cout << 125 <<std::endl;
    std::cout << 126 <<std::endl;
    std::cout << 127 <<std::endl;
    std::cout << 128 <<std::endl;
    std::cout << 129 <<std::endl;
    std::cout << 130 <<std::endl;
    std::cout << 131 <<std::endl;
    std::cout << 132 <<std::endl;
    std::cout << 133 <<std::endl;
    std::cout << 134 <<std::endl;
    std::cout << 135 <<std::endl;
    std::cout << 136 <<std::endl;
    std::cout << 137 <<std::endl;
    std::cout << 138 <<std::endl;
    std::cout << 139 <<std::endl;
    std::cout << 140 <<std::endl;
    std::cout << 141 <<std::endl;
    std::cout << 142 <<std::endl;
    std::cout << 143 <<std::endl;
    std::cout << 144 <<std::endl;
    std::cout << 145 <<std::endl;
    std::cout << 146 <<std::endl;
    std::cout << 147 <<std::endl;
    std::cout << 148 <<std::endl;
    std::cout << 149 <<std::endl;
    std::cout << 150 <<std::endl;
    std::cout << 151 <<std::endl;
    std::cout << 152 <<std::endl;
    std::cout << 153 <<std::endl;
    std::cout << 154 <<std::endl;
    std::cout << 155 <<std::endl;
    std::cout << 156 <<std::endl;
    std::cout << 157 <<std::endl;
    std::cout << 158 <<std::endl;
    std::cout << 159 <<std::endl;
    std::cout << 160 <<std::endl;
    std::cout << 161 <<std::endl;
    std::cout << 162 <<std::endl;
    std::cout << 163 <<std::endl;
    std::cout << 164 <<std::endl;
    std::cout << 165 <<std::endl;
    std::cout << 166 <<std::endl;
    std::cout << 167 <<std::endl;
    std::cout << 168 <<std::endl;
    std::cout << 169 <<std::endl;
    std::cout << 170 <<std::endl;
    std::cout << 171 <<std::endl;
    std::cout << 172 <<std::endl;
    std::cout << 173 <<std::endl;
    std::cout << 174 <<std::endl;
    std::cout << 175 <<std::endl;
    std::cout << 176 <<std::endl;
    std::cout << 177 <<std::endl;
    std::cout << 178 <<std::endl;
    std::cout << 179 <<std::endl;
    std::cout << 180 <<std::endl;
    std::cout << 181 <<std::endl;
    std::cout << 182 <<std::endl;
    std::cout << 183 <<std::endl;
    std::cout << 184 <<std::endl;
    std::cout << 185 <<std::endl;
    std::cout << 186 <<std::endl;
    std::cout << 187 <<std::endl;
    std::cout << 188 <<std::endl;
    std::cout << 189 <<std::endl;
    std::cout << 190 <<std::endl;
    std::cout << 191 <<std::endl;
    std::cout << 192 <<std::endl;
    std::cout << 193 <<std::endl;
    std::cout << 194 <<std::endl;
    std::cout << 195 <<std::endl;
    std::cout << 196 <<std::endl;
    std::cout << 197 <<std::endl;
    std::cout << 198 <<std::endl;
    std::cout << 199 <<std::endl;
	return 0;
}
(感谢你看到这里)

没错,就是这么夸张。for循环就是这么好用。

for循环的格式
for(初始化代码;判断是否执行的条件;符合条件的操作)
下面的大括号里面的代码和最后一个分号一样的作用。上面的代码1有可以这样写

#include <iostream>
int main(int argc,char*argv[]){
	for(int i = 0;i<200;){
		i++;
		std::cout << i <<std::endl;
	}
	return 0;
}

包括第一个分号前面的“初始化操作”,相当于在开始循环之前执行一次的代码。我们声明了一个叫iint变量,以供下面使用。其实我们同样可以这么写

#include <iostream>
int main(int argc,char*argv[]){
	int i = 0;
	for(;i<200;i++){
		std::cout << i <<std::endl;
	}
	return 0;
}

这样写是完全没有问题的。
但是稍微存在一点区别。这里涉及到一个C++概念:变量的作用域
刚刚的代码实际上和和下面的代码是等价的

#include <iostream>
int main(int argc,char*argv[]){
	{
		int i = 0;//i从这里开始有效
		for(;i<200;i++){
			std::cout << i <<std::endl;
		}
	}//大括号结束,i就不存在了
	return 0;
}

变量的作用域是大括号,在大括号里面声明的变量,仅仅在同一个大括号里面存在,出了大括号就不存在了。
因此下面的语句是合法的

#include <iostream>
int main(int argc,char*argv[]){
	{
		int i = 0;//i从这里开始有效
		for(;i<200;i++){
			std::cout << i <<std::endl;
		}
	}//大括号结束,i就不存在了
	int i =0;//这里的i和刚刚的无关,这句代码是正确的
	return 0;
}

为啥我做出这种等价判断?因为for循环可以

#include <iostream>
int main(int argc,char*argv[]){
	for(int i = 0;i<200;){
		i++;
		std::cout << i <<std::endl;
	}
	for(int i = 0;i<200;){
		i++;
		std::cout << i <<std::endl;
	}
	return 0;
}

使用同一个名称i进行2次
而上面的代码

#include <iostream>
int main(int argc,char*argv[]){
	int i = 0;
	for(;i<200;i++){
		std::cout << i <<std::endl;
	}
	int i = 0;//错误:变量重复定义
	return 0;
}

则会报错。。同一个变量在同一个大括号内不能声明2次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值