鱼C论坛

 找回密码
 立即注册
查看: 3132|回复: 6

break

[复制链接]
发表于 2011-4-21 13:25:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 soldier 于 2011-4-26 15:38 编辑

#include<stdio.h>
void main()
{
        int i ,j ,k;
        printf("ijk\n");
        for (i=0;i<2;i++)
                for(j=0;j<2;j++)

                        for(k=0;k<2;k++) break;
                        printf("%d%d%d\n",i,j,k);
}


请问答案为什么是220?请详解!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-21 16:55:21 | 显示全部楼层
本帖最后由 soldier 于 2011-4-21 17:59 编辑

i : i<2的时候退出循环,但是在最后一次的循环的时候i++ 把i加到了2, 条件不成立(此时是i= 2),退出循环, 所以i=2, j和i同理,  k=0, for语句执行的顺序是先执行k=0,在比较k<2, 在执行循环体,最后执行k++, 因为k在的循环只有一个break语句,在执行k++之前就跳出了循环体,所以k=0.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-21 22:42:06 | 显示全部楼层
#include<stdio.h>
void main()
{
        int i ,j ,k;
        printf("ijk\n");
        {
                for (i=0;i<2;i++)
                {
                        for(j=0;j<2;j++)
                        {
                                for(k=0;k<2;k++) break;
                                {
                                        printf("%d%d%d\n",i,j,k);
                                }
                        }       
                }
        }       
}

请问版主为什么这样答案又不一样了?谢谢,和我的上一个问题的区别在哪里?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-22 19:41:38 | 显示全部楼层
for(k=0;k<2;k++) break;  只要 K<2  立马跳  都不会执行
printf("%d%d%d\n",i,j,k);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-22 19:42:28 | 显示全部楼层
break 是跳出最近的一个循环  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-23 15:53:43 | 显示全部楼层
本帖最后由 soldier 于 2011-4-25 13:23 编辑

回复 xiang__jie 的帖子

                for (i=0;i<2;i++)
                {
                        for(j=0;j<2;j++)
                        {
                                for(k=0;k<2;k++) break;
                                {
                                        printf("%d%d%d\n",i,j,k);
                                }
                        }        
                }
你的这个段代码相当与
         for (i=0;i<2;i++)
                {
                        for(j=0;j<2;j++)
                        {
                                for(k=0;k<2;k++)  
                               {
                                         break;
                                }
                               printf("%d%d%d\n",i,j,k);
                        }        
                }
而你上面的那段代码相当于
         for (i=0;i<2;i++)
                {
                        for(j=0;j<2;j++)
                        {
                                for(k=0;k<2;k++)  
                               {
                                                  break;
                                }
                        }     
                }
                printf("%d%d%d\n",i,j,k);   





printf("%d%d%d\n",i,j,k);   这条语句一个在第二个循环中, 一个在第一个循环中, 别忘了第三个循环后面还有一个break,在不加{}的时候他是第三个循环的循环体(for循环不加{}后面的一条语句)。


他们两个的循环不一样, 结果就不一样了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-25 13:17:34 | 显示全部楼层
代码应该相当于这样的  这样就说的通了!!!!



#include <stdio.h>
void main()
{
        int i , j , k ;
        for(i = 0 ; i < 2 ; i++)
        {
                for(j = 0 ; j < 2 ; j++)
                {
                        for(k = 0 ; k < 2 ; k++)
                        {
                                break;
                        }
                }
        }
       
        printf("%d%d%d\n" , i , j , k);
}

k = 0 时就break了  ,所以最后 k = 0。
对于 i 和j ,当然是循环完成后,才依次退出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 23:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表