if语句中break用法

小菜一枚 2012-10-09 08:10:30
说是break会直接跳出最内层的循环或switch语句块,不理睬if语句,那么如下程序,则是若为真直接跳出for循环,执行printf("\n")
int main()
{
int m,n,res,i;
printf("输入被除数和除数:");
scanf("%d%d",&m,&n);
printf("%d.",m/n);//先输出整数部分和小数点
res=m%n;//取余数
for(i=0;i<Max;i++)
{
res*=10;//余数乘10
printf("%d",res/n);// 余数乘10后再与除数相除,输出第i+1位小数
res=res%n;//取余数
if(0==res)//若为真直接跳出for循环,执行printf("\n")
{
break;
}
}
printf("\n");
return 0;
}

若是如下呢,if为真时,break跳到哪里?
int main()
{
for(i=0;i<Max;i++)
{
while(...)
{
if(0==res)//余数为0时说明除法结束,并退出,否则输出Max位小数
{
break;
}
printf("A");
}
printf("B");
}
printf("\n");
return 0;
}

2.不好意思哈~还有个问题比较迷糊:
若break在if语句的else中,是不是也直接跳出最内层循环,如下例中跳出
for(int i = nLength - 1; i >= 0; i --)
bool Increment(char* number)

{

bool isOverflow = false;

int nTakeOver = 0;

int nLength = strlen(number);
for(int i = nLength - 1; i >= 0; i --)

{

int nSum = number[i] - '0' + nTakeOver;

if(i == nLength - 1)

nSum ++;

if(nSum >= 10)

{

if(i == 0)

isOverflow = true;

else

{

nSum -= 10;

nTakeOver = 1;

number[i] = '0' + nSum;

}

}

else

{

number[i] = '0' + nSum;

break;

}

}


return isOverflow;

}
...全文
56437 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
JawSoW 2015-04-26
  • 打赏
  • 举报
回复
调试才是最重要的
xiaoyongjun2003 2013-07-30
  • 打赏
  • 举报
回复 1
尝试后发现 break 只能跳出循环(最内层) 甭管里面有几个if嵌套
thomas_2012 2012-11-26
  • 打赏
  • 举报
回复 8
break语句事实上跳出的是最近的那层循环语句或者switch语句。特别注意的是if不是循环语句。
小菜一枚 2012-10-12
  • 打赏
  • 举报
回复 1
[Quote=引用 20 楼 的回复:]
引用 8 楼 的回复:

记住一句话,break;只管循环,不管if的,与if没关系。所以break只跳循环,第一个跳while第二个跳if。


呵呵,你都说跟if无关了,还“第二个跳if”啊?呵呵,打错了吧?
[/Quote]

赞成你说的
guopeng111111 2012-10-10
  • 打赏
  • 举报
回复
跳出对应的if那一层循环
wanglu343280746 2012-10-10
  • 打赏
  • 举报
回复
单步调试一下什么都明白了
huhaifengasd 2012-10-10
  • 打赏
  • 举报
回复
if不属于循环,这是判断语句。
喝牛奶的熊 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

记住一句话,break;只管循环,不管if的,与if没关系。所以break只跳循环,第一个跳while第二个跳if。
[/Quote]

呵呵,你都说跟if无关了,还“第二个跳if”啊?呵呵,打错了吧?
赵4老师 2012-10-10
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
gaoyang2 2012-10-10
  • 打赏
  • 举报
回复
break 跳出跟它最近的一出循环,continue则是到下次循环
hu7324829 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

单步调试一下什么都明白了
[/Quote]
++
还是用单步调试比较好
龙泉剑 2012-10-10
  • 打赏
  • 举报
回复
break是跳出最内层的循环(while,for)或switch,if什么的跟他无关
zhaoming262350 2012-10-09
  • 打赏
  • 举报
回复 1
break 在哪一层循环中,跳出哪一个循环;
while(...)
{
if(0==res)//余数为0时说明除法结束,并退出,否则输出Max位小数
{
break;
}
printf("A");
}
printf("B");
break ,跳出内层循环,所以不能执行 printf(“\n”);
直接跳出循环执行printf(“B”);
AndyZhang 2012-10-09
  • 打赏
  • 举报
回复
你只需要看看break属于哪个最里面的循环,就跳出谁,只跳出一次,其他继续
大熊猫侯佩 2012-10-09
  • 打赏
  • 举报
回复
这个问题仿佛可以用实践来解决
dancool2006 2012-10-09
  • 打赏
  • 举报
回复
break应该是跳出本层循环,goto可以跳出多重循环
armsword 2012-10-09
  • 打赏
  • 举报
回复
记住一句话,break;只管循环,不管if的,与if没关系。所以break只跳循环,第一个跳while第二个跳if。

manxiSafe 2012-10-09
  • 打赏
  • 举报
回复 1
break其作用大多情况下是终止上一层的循环,以C语言来说,break在switch(开关语句)中在执行一条case后跳出语句的作用。
1. break语句对if-else的条件语句不起作用。
2. 在多层循环中,一个break语句只向外跳一层。
newtee 2012-10-09
  • 打赏
  • 举报
回复
只是跳出它所属的那个循环
图灵狗 2012-10-09
  • 打赏
  • 举报
回复
第一个break退出while循环,第二个退出for循环。
加载更多回复(4)
说明:解压后要注意把文件属性修改一下,解锁即可用 目录表 前言 本书的读者 本书的由来 本书目前的状况 官方网站 约定条款 欢迎给我反馈 值得思考的一些东西 1. 介绍 简介 Python的特色 概括 为什么不使用Perl? 程序员的话 2. 安装Python Linux和BSD用户 Windows®用户 概括 3. 最初的步骤 简介 使用带提示符的解释器 挑选一个编辑器 使用源文件 输出 它如何工作 可执行的Python程序 获取帮助 概括 4. 基本概念 字面意义上的常量 数 字符串 变量 标识符的命名 数据类型 对象 输出 它如何工作 逻辑行与物理行 缩进 概括 5. 运算符与表达式 简介 运算符 运算符优先级 计算顺序 结合规律 表达式 使用表达式 概括 6. 控制流 简介 if语句 使用if语句 它如何工作 while语句 使用while语句 for循环 使用for语句 break语句 使用break语句 continue语句 使用continue语句 概括 7. 函数 简介 定义函数 函数形参 使用函数形参 局部变量 使用局部变量 使用global语句 默认参数值 使用默认参数值 关键参数 使用关键参数 return语句 使用字面意义上的语句 DocStrings 使用DocStrings 概括 8. 模块 简介 使用sys模块 字节编译的.pyc文件 from..import语句 模块的__name__ 使用模块的__name__ 制造你自己的模块 创建你自己的模块 from..import dir()函数 使用dir函数 概括 9. 数据结构 简介 列表 对象与类的快速入门 使用列表 元组 使用元组 元组与打印语句 字典 使用字典 序列 使用序列 参考 对象与参考 更多字符串的内容 字符串的方法 概括 10. 解决问题——编写一个Python脚本 问题 解决方案 版本一 版本二 版本三 版本四 进一步优化 软件开发过程 概括 11. 面向对象的编程 简介 self 类 创建一个类 对象的方法 使用对象的方法 __init__方法 使用__init__方法 类与对象的变量 使用类与对象的变量 继承 使用继承 概括 12. 输入/输出 文件 使用文件 储存器 储存与取储存 概括 13. 异常 错误 try..except 处理异常 引发异常 如何引发异常 try..finally 使用finally 概括 14. Python标准库 简介 sys模块 命令行参数 更多sys的内容 os模块 概括 15. 更多Python的内容 特殊的方法 单语句块 列表综合 使用列表综合 在函数接收元组和列表 lambda形式 使用lambda形式 exec和eval语句 assert语句 repr函数 概括 16. 接下来学习什么? 图形软件 GUI工具概括 探索更多内容 概括 A. 自由/开放源码软件(FLOSS) B. 关于本书 后记 关于作者 关于译者 关于简体文译本 C. 修订记录 时间表 术语表 表格 5.1 运算符与它们的用法 5.2 运算符优先级 15.1 一些特殊的方法 例子 3.1 使用带提示符的Python解释器 3.2 使用源文件 4.1 使用变量和字面意义上的常量 5.1 使用表达式 6.1 使用if语句 6.2 使用while语句 6.3 使用for语句 6.4 使用break语句 6.5 使用continue语句 7.1 定义函数 7.2 使用函数形参 7.3 使用局部变量 7.4 使用global语句 7.5 使用默认参数值 7.6 使用关键参数 7.7

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧