循环语句有 三种
for 循环
while 循环
do while 循环
循环语句 都有一个符合循环的条件
这个是条件 是 bool 类型 (布尔类型)
就是 只有 true false 两种情况 只有条件为 true 的时候 才会执行循环语句块
我们先看看里面最简单的 while 循环
语法规则
while( 条件 ) 此处结果只要是 true 或者false
{
此处为执行的循环语句块
}
如
int a = 8;
while ( a > 0 ) 这个运算符结果为 true (真)
{
// a++; 这里的意思是 a 自加一 等价 a = a + 1
a--; 这里就是 a自减一了 等价 a = a - 1
}
以上就是简单的用法
注意 // 是注释符 在该行中//后 一切写法都是注释
以上语句的运行流程
先判断了 a > 0 条件成立 就开始运行循环语句块
a--; 指令后 此时 a = 7 然后回到 while 处 继续判断 条件是否成立 周而复始 直到 while 处 判断的条件不成立 不再允行循环语句块
以上 运行了循环语句块 8 次后 a = 0 时
while 处的条件 不再成立 运算符结果为 false 就不会再运行 该循环语句块了 程序往下继续运行
现在说说 do while 语句
这个是一整个语句块 是一体的
语法规则
do
{
循环语句块
}
while( 条件 );
这个语句 和 while 语句 基本就只有一个执行流
的改变
就是 它会先运行一次 循环语句块后 再去判断while 处的条件 就算第一次 的条件都不成立
也是可以运行一次循环语句块的
如
int a = 0;
do
{
a--;
}
while( a > 0 );
这个语句的运行结果
a = -1;
这个就是条件不成立 也会运行一次循环语句
好了 接下来 我们说说 程序中最常用的循环语句
for 循环
这个和 前两个有点不太一样 不过循环规则是一样的
语法规则
for( 初始化区域 ; 条件区域
; 每次循环后执行区域 )
{
循环语句块
}
有点不一样吧 它 for 上面都有三个区域了
如
for( int a = 0 ; a < 8 ; a++ )
{
int b = a + 8;
}
上述 我们在for的初始化区域 定义了一个 int 型
a 变量 且 初始化为 0 条件区域 条件是 a<8
尾置区 是 a++ 这样咱们就不会死循环了 因为保障了 条件循环到一定次数后 条件会为 false
注意 我们一定要注意 这个在初始化区域 定义的 int a 变量 是一个 for 语句块里 的局部变量
这个变量只能在for 语句里面 合法使用 语句外部无法访问使用
for( int a = 0 ; a < 8 ; a++ )
{
int b = a + 8;
}
a = 9; //error 非法变量使用 编译器会报 未定义该变量 反正在外部你也用不了
值得注意的也就这点了
还有一个 for 循环语句的变种 他们叫 for 一起 单词忘了
语法规则
int b[8] = { 10 };//数组定义规则 用10 初始化了 每一个元素
for( int a : b )
{
int c = a;
}
这个语句是不是感觉有点不太一样
怎么没有循环条件呢?
其实循环条件 更 b 这个数组变量有关
首先 它这个是 每次循环时 都定义一个 int a
去拿 b 数组变量里的其中一个元素
是按照顺序去依次拿的
比如
第一次 拿 int a = b[0];
第二次 拿 int a = b[1];
周而复始 直到 b数组里面的元素 拿完 无法再拿
循环结束
这个语句 当我们要拿动态数组的元素时 很有用
OK 现在 再说一个 与循环语句经常形影不离的
两个关键字
break (层跳出)
continue(次跳出)
次跳出是我自己定义的 感觉形象点
这两个干嘛的呢 主要就是控制循环语句 执行流程的
如
int a = 0;
while( true )
{
if( a >8 )
break;
else
a++;
}
以上
while 一眼上去 看条件 true 写死了 是个死循环
但是我们
在 if 语句 判断了 a > 8 时 执行break;
层跳出 顾名思义 就是 跳出这层
这个层是什么 就是 这个循环语句
程序只要执行到 break 直接跳出此层循环
不会再执行 这个循环语句了 就当这个循环语句已经完成了 循环条件已经为 false 了
continue 次跳出
如
int a = 0;
while( true )
{
if( a > 8 )
{
continue;
a = 0;
}
else
a++;
}
以上
也是跳循环 但是跳法不同
这个程序执行到 continue;时 会直接进入下一次循环 跳掉本次循环
是的 这个循环是 实实在在的死循环了
注意 continue;指令 下面的 a = 0; 并没有得到执行
程序遇到这两个关键字 break continue
就不会执行 以下的语句 直接跳循环 所以通常我们是在 需要跳循环的执行尾部使用
continue 次跳出 的意思大家应该知道了 单次跳出
但 break 层跳出 大家可能不太理解 给个案例
如
int a = 0;
for( ; a < 8 ; )
for( int i = 0;i < 8 ; i++ )
{
if( i == 2)
break;
}
以上
一眼上去是不是有点迷惑了
怎么第一个for 初始化区域 尾置区 没写呢 还有大括号呢?
这个两个区域是允许留空的 至于大括号
在没有大括号时 会运行下一条语句 这个if 一样的规则
在这两个循环中 我们在嵌套的 for 循环里面 写了
if( i == 2) break; == 号 是等于的意思
程序里的 相等号 并不和数学里的相等号一样
== 相等号 = 赋值号
当 i 等于2时 执行 break 跳出本层循环
就是 它会 跳出 for( int i = 0;i < 8 ; i++ ) 这个语句 开始执行外部循环 for( ; a < 8 ; ) 下一次循环条件判断 成立后 去执行 for( int i = 0;i < 8 ; i++ )的循环
这个的外层循环 是个死循环 因为条件无法 达到flase a变量 永远是 零
好了 终于结束了
要记清楚
break (层跳出)
continue(次跳出)