error C2044: illegal continue!break 和continue的用法
2015-07-25 17:27
585 查看
break 和continue都是用来控制循环的流程。
break结束循环,不执行循环中剩余的语句
continue 结束当前的迭代,跳转到循环的顶部,及循环开始的位置,继续执行迭代
1、break
C语言中的break可以用在两个地方:
(1)用在switch中,作用是使程序流程转到switch语句之后的语句去执行。
(2)用在循环中,作用是转到循环语句之后的语句执行。
要注意的是,如果switch语句或循环语句是嵌套的,那break都只能跳出它所在的switch或循环,而不是跳出所有switch或所有循环。
例如:
for(i = 1; i <= 10; i++)
for(j = 1; j <= 10; j++)
if(i == j)
break;
代码中的break在内循环中,它使程序跳出内循环,外循环将继续进行。
2、continue
continue只能用在循环中,作用是跳过本次循环剩下的部分,转去执行下一次循环。对于for循环,只要遇到continue,便转到for后面括号里的第三个表达式。
注意:
continue不能用在单纯的switch语句中,除非switch在循环中或循环在switch中,这种情况下continue是对循环起作用而不是对switch。如果没有循环,单纯的switch中出现continue是一个语法错误。
使用案例:
错误案例:
最后来一个,大家可以看看哪里出问题了!
#include<stdio.h>
int main(void)
{
char ch ;
while((ch=getchar()) ! = '#')
{
if(ch=='\n')
continue;
printf("Step 1 \n");
if(ch=='c')
continue;
else if (ch=='b')
break;
else if (ch == 'g')
goto laststep;
printf("Step 2 \n");
laststep:printf("Step 3 \n");
}
printf("Done \n");
return 0;
}
break结束循环,不执行循环中剩余的语句
continue 结束当前的迭代,跳转到循环的顶部,及循环开始的位置,继续执行迭代
1、break
C语言中的break可以用在两个地方:
(1)用在switch中,作用是使程序流程转到switch语句之后的语句去执行。
(2)用在循环中,作用是转到循环语句之后的语句执行。
要注意的是,如果switch语句或循环语句是嵌套的,那break都只能跳出它所在的switch或循环,而不是跳出所有switch或所有循环。
例如:
for(i = 1; i <= 10; i++)
for(j = 1; j <= 10; j++)
if(i == j)
break;
代码中的break在内循环中,它使程序跳出内循环,外循环将继续进行。
2、continue
continue只能用在循环中,作用是跳过本次循环剩下的部分,转去执行下一次循环。对于for循环,只要遇到continue,便转到for后面括号里的第三个表达式。
注意:
continue不能用在单纯的switch语句中,除非switch在循环中或循环在switch中,这种情况下continue是对循环起作用而不是对switch。如果没有循环,单纯的switch中出现continue是一个语法错误。
使用案例:
#include<stdio.h> int main (void) { int i,j,n,x,a[10]; printf("输入数据的个数n:"); scanf("%d",&n); printf("输入%d个整数:",n); for(i=0;i<n;i++); scanf("%d",&a[i]); printf("输入要插入的整数:"); scanf("%d",&x); for(i=0;i<n;i++); { if(x>a[i]) continue; j=n-1; while(j>=i) { a[j]=a[j+1]; j++; } a[i]=x; break; } if(i==n)a =x; for(i=0;i<n+1;i++) printf("%d",a[i]); putchar('\n'); return 0; }
错误案例:
#include <iostream> using namespace std; int main(){ char i; cout<<"Menu:A(dd) D(elete) S(ort) Q(uit) Select One:"<<endl; cin>>i; if (i=='A') { cout<<"增"<<endl; continue; } else if (i=='D') { cout<<"删"<<endl; continue; } else if (i=='S') { cout<<"排序"<<endl; continue; } else if (i=='Q') { cout<<"退出"<<endl; continue; } else { cout<<"无此操作符"<<endl; break; } return 0; }
最后来一个,大家可以看看哪里出问题了!
#include<stdio.h>
int main(void)
{
char ch ;
while((ch=getchar()) ! = '#')
{
if(ch=='\n')
continue;
printf("Step 1 \n");
if(ch=='c')
continue;
else if (ch=='b')
break;
else if (ch == 'g')
goto laststep;
printf("Step 2 \n");
laststep:printf("Step 3 \n");
}
printf("Done \n");
return 0;
}
相关文章推荐
- iOS开发-控件基类:UIView
- 工作队列 ( workqueue )
- UIButton的titleEdgeInsets和imageEdgeInsets使用技巧
- MIUI应用权限设置
- 【从零开始学NGUI 】 (九)分页效果实现
- 数组作为实参和形参的形式是怎样的?zhidao.baidu.com/link?url=owojlL0OUiAYU50L9g86kmo5AToWjv42ZQo9WN0HhtvHzGbcU7etRbJ69
- HDU 5301 Buildings 建公寓(逻辑,水)
- hdu5297 Y sequence 容斥加迭代
- UiAutomator——环境搭建及简单使用
- 通过回调实现Service中更新UI。
- CF Gym 100637K Microcircuits (DP)
- NGUI 3.5课程(五岁以下儿童)button-图片切换
- POJ 1679 The Unique MST
- ios学习整理(二)使用drawRect:方法自定义绘图和UIBezierPath类
- iOS开发-UITableView单选多选/复选实现1
- Ubuntu GUI工具及其对应命令
- Android—开发自学历程(1)-Activity(4)-UI布局
- hdu3530 Subsequence 单调队列
- select sequence.currval 时报错 ORA-08002: 序列XXXX尚未在此进程中定义
- UItableview x详解