黑马程序猿_C语言之循环结构
来源:互联网 发布:大数据的应用案例 编辑:程序博客网 时间:2024/05/17 07:33
循环结构的三种类型:while语句,do while 语句,for语句。
1.while语句
while(条件)
{
循环体
}
比较continue跟break的区别,如:
int count=0;while(count<50){++count;if(count%10 == 0){continue;}printf("%d\n",count); return 0; }
int count=0;while(count<50){++count;if(count%10 == 0){break;}printf("%d\n",count); return 0;}
第一个代码段是count为10的倍数时,就跳出此次循环,即不打印count,进入下一次循环;第二个代码段是count为10的倍数时跳出整个while循环,循环终止,输出结果为1,2,3,4,5,6,7,8,9。
同样的,while条件后不能添加;,循环内部要定义新的变量时一定要使用大括号。
2.do while语句
do
{
循环体
}while(条件);
int main(){int i = 0;while(i<0){i++;}/*do{i++;}while(i<0);*/printf("i=%d\n",i);return 0;}
这段代码可以看出while语句跟do while语句的区别:while语句输出的i=0,do while语句输出的i=1。while语句:如果一开始条件不成立,永远不会执行循环体;do while 语句:不管一开始的条件是否成立,至少会执行一次循环体。
3.for语句
for(语句1;条件;语句2)
{
循环体
}
语句1为初始化语句,语句2为增量语句,此语句为执行完循环体再执行。
for循环使用的注意点
1.作用域不明确,for循环里定义新的变量时,循环一定要加大括号。
int main(){for(int i=0;i<5;i++) int a =10;return 0;}//编译不通过。
2.for条件后面不要随便加;号
3.循环体里面的变量作用域
int main(){for(int i=0;i<5;i++,a++)//逗号运算符,可连接多个小语句{ int a =10;}return 0;}此代码编译不通过,因为定量a的作用域只限于循环体内,执行完循环体后,a的内存就释放了,导致for条件里面的a没有定义。
4.循环体里面的变量定义
int main(){for(int i=0;i<5;i++){ int i =10; printf("%d\n",i);}return 0;}此语句可以编译成功,输出结果为5次10,因为循环体里面的新变量i,每次循环执行完毕后后释放,不与条件里面的i冲突。
5.变量的作用域比较
int main(){int a =10 ;for(int i=0,a=9;i<5;i++){ a=8; printf("%d\n",a);}return 0;}此段代码里面定义了三个a,但是每个a的作用域不一样,执行语句最先找到a=8,若循环体里没有a=8,则找到a=9,若for条件里面没有a=9,则找到最外层的a=10.
4.for语句与while语句比较
1.死循环
for(;;);
while(1);
2.for循环的变量定义在内部,while循环的变量定义在外部,从内存回收,性能上for循环优于while循环。
0 0
- 黑马程序猿_C语言之循环结构
- 黑马程序猿_C语言之选择结构
- 黑马程序员_C语言_循环结构
- 黑马程序员_C语言循环
- 黑马程序猿_C语言指针
- 黑马程序员_C语言基础_循环结构使用区别,9*9口诀表
- 黑马程序员_C语言结构体
- 黑马程序猿_C语言数组与字符串
- 黑马程序员_C#中的循环结构和结构体
- 黑马程序员_C语言之复杂数据类型
- 黑马程序员_C语言之预处理指令
- 黑马程序员_C语言之关键字
- 黑马程序员_C语言之内存空间分类
- 黑马程序员_C流程控制和循环结构
- 黑马程序员_C语言学习笔记之结构体和枚举
- 黑马程序员_C#语言中各种循环的优缺点
- 黑马程序员_C语言冒泡算法和约瑟夫循环分析
- 黑马程序员——C语言之循环结构
- thinkPHP的include使用
- 5.5 函数值
- const char*, char const*, char*const的区别
- 用uitextfield写xxx xxx xxx格式的电话号码输入框
- 2014/10/23——记一次新生账号注册的问题吧
- 黑马程序猿_C语言之循环结构
- UVa11683 - Laser Sculpture(很有技巧)
- 第二章:理解DispatcherServlet ——深入浅出学Spring Web MVC
- java基础--数组概念
- linq中jion查询
- mybatis源代码分析之datasource包
- 我的异常01
- jCarousel jQuery下的滚动切换传送插件
- mapreduce配置调优