break、continue和return的用法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
32. if((P3&keyscan)!=keyscan)
33. {
34.
key=(P3&keyscan);
35.
if(key==0x10)
36.
{
ຫໍສະໝຸດ Baidu
37.
keyval=4;
38.
return keyval;
39.
}
40.
else if(key==0x80)
41.
{
42.
keyval=1;
43.
return keyval;
20. { 21. for(i = 0; i <600; i++); //i 从 0 加到 600,CPU 大概就耗时 1 毫秒
22. }
23. } 24. //-----------------------按键扫描子函数-------------------------------
25. uchar keyscan()
26. { uchar key; 27. uchar keyscan=0x90; //准备读取 P3^4、 P3^7 的值,检测 s1 和 s4
28. P3|=keyscan; 29. if((P3&keyscan)!=keyscan) //!!!注意:!=的优先级大于&,必须加括号
30. {
31. Delay_ms(10);
比如:
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++) {
13. uint keyval;
14. 15. //----------------------延时子函数------------------------
16. void Delay_ms(uint a)
//延时 a 毫秒,需要输入变量值 0~65535
17. {
18. uint i;
19. while(--a!= 0)
76. {
77. while(1)
78. {
79. keyscan();
80. if(keyval==2)
81. {
82.
P3_0=~P3_0; //取 LED 相反状态
83.
Delay_ms(250);
84.
keyval=0;
85.
}
86. }
87.
88. }
54.
if((P3&keyscan)!=0x80)
55.
{
56.
keyval=3;
57.
while((P3&keyscan)!=0x80);
58.
return keyval;
59.
}
60. }
61. 62. P3_4=1;
//P3^4、 P3^7 分别赋值 1、 0 ,检测键 2
63. P3_7=0;
1.#include <REG51.H> 2. 3. #define uint unsigned int 4. #define uchar unsigned char 5. 6. sbit LED=P1^0; 7. sbit P3_0=P3^0; 8. sbit P3_1=P3^1; 9. sbit P3_4=P3^4; 10. sbit P3_5=P3^5; 11. sbit P3_7=P3^7; 12.
64. if((P3&keyscan)!=0x10)
65. {
66.
Delay_ms(10);
67.
if((P3&keyscan)!=0x10)
68.
{
69.
keyval=2;
70.
while((P3&keyscan)!=0x10);
71.
return keyval;
72.
}
73. }
74. }
75. void main()
44.
}
45.
while((P3&keyscan)!=keyscan);
46. }
47. }
48. 49. P3_4=0; //P3^4、 P3^7 分别赋值 0、 1 ,检测键 3
50. P3_7=1;
51. if((P3&keyscan)!=0x80)
52. {
53.
Delay_ms(10);
break 语句:(循环或 switch) break 语句会使运行的程序立刻退出包含在最内层的循环或者退出一个 switch 语句(注意: 多层循环只向外跳一层)。由于它是用来退出循环或者 switch 语句,所以只有当它出现在 这些语句时,这种形式的 break 语句才是合法的。 注意:break 语句不能用于循环语句和 switch 语句之外的任何其他语句中。
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:、 !=的优先级大于&,这点没注意。 刚发现以下程序依然是错误的,改正后再更新吧... [cpp] view plaincopyprint?