C 语言循环结构 — 解读
C语言中的循环结构又称重复结构,是对于相似数据执行 相似操作提供的基本结构,也是很多计算机语言中的基础语法
接下来安语会带你去详细分析循环语法的内涵。
1.while( 表达式 ){ 执行语句 };
这是while循环 ,它的执行会先判断表达式的正确与否。当表达式正确时,才会执行 { } 中的执行语句。如果表达式一直正确就会成为死循环比如:
while(1){
printf("I have a cat");
}
//这个程序会一直输出'I hava a cat'语句.不会停止;
如果此时将while的表达式换成 k++ 或者++k 并且让他们小于一个数 ;
int k=1,n=10;
while(k++<=n){
printf("%d ",k);
}
//此时将k输出你会看到控制台打印: 2 3 4
//5 6 7 8 9 10 11;也就是说循环了10次
//如果换成下面的代码;
int k=1,n=10;
while(++k<=n){
printf("%d ",k);
}
//此时将k输出你会看到控制台打印: 2 3 4
//5 6 7 8 9 10;也就是说循环了9次
//这是问什么呢?? 很多初学者可能
不明白 那个傻子 也不知道。。
其实最大的不一样在于++k;k++;语句本身的执行 ,他们对于自身都是加一但是一旦放到表达式中就显得不一样了 例子如下;
int a=1, b=1, c, d;
c = a++;
d = ++b;
printf("%d %d", c, d);
//此时我输出了 c,d 他们的值
//是 c=1,d=2;
//结论 ++b是先b自加,在赋
//值给d a++是先把a的值赋给c在去自加的;
回到之前的 while语句中 第一个 因为k++是因为先去判断再去自加的所以k可以输出 11 也就是循环10次,而后一个 ++k是因为先自加再去判断的所以最大输出10 也就是循环9次;
嘿嘿 安语知道 这个可能比较难因为这是程序的语法 但是 明白了这个后面的循环会简单很多 ;
2. do{ 执行语句 } while( 表达式 );
说起这个我记得我当初 也没怎么搞明白,因为 她可以解决的 ,她的姐姐也可以而且她姐姐比她漂亮多了 ;
她的执行 。 是先do后面的{ 执行语句 } 再去判断 while( ) 里面的表达式。
3. for(表达式1;表达式2;表达式3){ 执行语句 }
这个应该是最长用的 ,因为她最美 最便捷,就像你最美一样 嘿嘿。
她的执行是这样的 , 先执行表达式1(表达式1 是初始条件 只执行一次 ) 后面会执行 表达式2(表达式2是循环的 条件语句 每一次执行 { 执行语句} 前都会执行 表达式2) 再然后她会执行{ 执行语句 } 很多人会误解为先执行表达式3 实际上最后才会执行表达式 3( 表达式3 她对循环做出了一些 调整)。
//一下是一些常见 的 for死循环
/* 例1 */
int i = 1;
for(;i<2;){
printf("aaa");
}
/* 例2 */
int i = 1;
for(;;i=1){
printf("aaa");
}
/* 例3 */
int i = 1;
for(;;){
printf("aaa");
}
/* 例4 */
for(int i=1;;){
printf("aaa");
}
// 这四个例子中全都是死循环;
结论: for( ; ; ){ }中的表达式1 ,2 ,3并不是必须的但是 如果for()循环中有这些东西 仅仅按照 我写的 对应作用推算就行了;
上述的这些循环在很多语言中都有但是c语言独有的 是 goto 语句
上代码
4.goto 字符串;
int a = 1,b = 8;
start: if(a > b){
printf("aaaa");
}
else{
a++;
goto start;
}
// goto 并不能直接 组成循环
// 但是和 if语句一起也可以产生循环效果;
// 其中 start 可以改为任意合法字符串
goto语句执行 是这样的 用字符串 加: 构成锚 ,由goto 跳至相应的锚;