break、continue和return的用法(附:2IO口控制4按键程序)
来源:互联网 发布:苏州淘宝开店培训 编辑:程序博客网 时间:2024/05/22 04:55
break语句:(循环或switch)
break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句(注意:多层循环只向外跳一层)。由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。
注意:break语句不能用于循环语句和switch语句之外的任何其他语句中。
比如:
unsigned char i, j=50;
for(i=0;i<100;i++)
{
if(i>j) break;
}
j=i;
当程序循环到i=51时,执行break语句,跳出for循环,开始执行j=i这条语句。
continue语句:(循环)
continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。
注意:continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误!
比如:
unsigned char i, j=50;
for(i=0;i<100;i++)
{
if(i>j) continue;
j=i;
}
当程序循环到i=51时,执行continue语句,结束本次循环,即不执行下面的j=i语句,而是执行i++,即i=52,故i<100,循环的条件成立,循环继续执行,知道i<100的条件不成立,for循环才终止。
return语句:
return表示从被调函数返回到主函数继续执行,返回时可以附带一个返回值,返回值可以是一个常量,变量,或是表达式。
在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。
返回值表示执行的顺利与否(-1、0),返回值可以是各种数据类型,如:int、float、double、char、a【】,*a,结构或类。
在写下面的程序时犯过两个错误:
1、把return写错了位置,导致按键扫描到了return就退出返回了主函数,按键扫描不完整。
2:、!=的优先级大于&,这点没注意。
刚发现以下程序依然是错误的,改正后再更新吧...
#include <REG51.H> #define uint unsigned int #define uchar unsigned char sbit LED=P1^0; sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_7=P3^7; uint keyval; //----------------------延时子函数------------------------ void Delay_ms(uint a) //延时a毫秒,需要输入变量值0~65535 { uint i; while(--a!= 0) { for(i = 0; i <600; i++); //i 从0加到600,CPU大概就耗时1毫秒 } } //-----------------------按键扫描子函数------------------------------- uchar keyscan() {uchar key; uchar keyscan=0x90;//准备读取P3^4、P3^7的值,检测s1和s4 P3|=keyscan; if((P3&keyscan)!=keyscan) //!!!注意:!=的优先级大于&,必须加括号 { Delay_ms(10); if((P3&keyscan)!=keyscan) { key=(P3&keyscan); if(key==0x10) { keyval=4; return keyval; } else if(key==0x80) { keyval=1; return keyval; } while((P3&keyscan)!=keyscan); } } P3_4=0; //P3^4、P3^7分别赋值0、1 ,检测键3 P3_7=1; if((P3&keyscan)!=0x80) { Delay_ms(10); if((P3&keyscan)!=0x80) { keyval=3; while((P3&keyscan)!=0x80); return keyval; } } P3_4=1; //P3^4、P3^7分别赋值1、0 ,检测键2 P3_7=0; if((P3&keyscan)!=0x10) { Delay_ms(10); if((P3&keyscan)!=0x10) { keyval=2; while((P3&keyscan)!=0x10); return keyval; } } } void main() { while(1) { keyscan(); if(keyval==2) { P3_0=~P3_0;//取LED相反状态 Delay_ms(250); keyval=0; } } }
- break、continue和return的用法(附:2IO口控制4按键程序)
- break,return和continue的用法
- continue break return的用法和区别
- continue,break和return用法
- break、continue、return的用法
- break、continue、return的用法
- 【奔跑的菜鸟】程序流控制关键字return,break,continue
- 跳转控制语句:关于break,continue,和return的区别
- continue,break,return和finally的用法和实例说明
- 控制循环结构: break、continue和return
- 新手笔记之关键字return、break和continue的用法
- Java中return,break和continue的用法及区别
- java中 break,continue和return的用法
- java continue,break,return 三者的区别和用法
- 新手笔记之关键字return、break和continue的用法
- JS中break continue和return的用法
- C#中return、break、continue的用法
- break return continue语句的用法
- MySQL的mysqldump工具的基本用法
- KML/KMZ介绍
- Web开发入门--http协议
- javascript创建对象的几种模式
- MediaFile中的isPlayListFileType函数功能介绍
- break、continue和return的用法(附:2IO口控制4按键程序)
- 菜鸟学设计模式之代理模式
- 1511 基础spfa
- 虚拟机上ubuntu10.04上网设置
- 设计模式1:简单工厂模式【创建型】
- summary201210
- 操作系统之FIFO和LRU
- 字节对齐 详解
- EasyBSD修复双系统下Ubuntu的启动项