语句
前面我们讲了数据类型,运算符及表达式。C语言也是一种语言,既然是语言,一定有连接词。这些连接词可以用来表示假设,循环等等。我们先来看看假设if语句。这些连接词有一定的规则,我们只能按照这些规则来编写,否则编译器无法理解,就出错了。
第一种形式为基本形式: if
if(表达式)语句
其语义是:如果表达式的值为真,则执行后面的语句,否则不执行该语句。
这个很好理解,if就是’如果’的意思,如果外面下雨,就带雨伞。在这里“外面下雨”,就是表达式,如果这个表达式是对的,就执行后面的’带雨伞’这个动作。
第二种形式为: if-else
if(表达式)
语句1;
else
语句2;
其语义是:如果表示式的值为真,则执行语句1,否则执行语句2
其执行过程如下图:
举个例子,如果外面下雨就步行,否则就骑自行车。如果’外面下雨’是真的那么就执行’步行’的动作,否则就执行’骑自行车’的动作。
第三种形式为if-else-if形式
前面的表达式很好理解,只有一个,但是对于多个表达式怎么办?这里就用if-else-if语句。其一般形式为:
if(表达式)
语句1;
else if(表达式2)
语句2;
else (表达式3)
语句3;
...
else if(表达式m)
语句m;
else
语句n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序
在使用if语句中还应注意以下问题:
(1) 在三种形式的if语句中,在if关键字后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其他表达式,如赋值表达式等,甚至也可以是一个变量。
例如: if(a=5)语句; if(b)语句; if(a=b)语句;
(2) 在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。
(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。
(4) 在if嵌套语句中,C语言规定,else总是与它前面最近的if配对。
例子:
#include
void main(void)
{
int a,b;
scanf_s("%d%d",&a,&b);
//if第一种形式
if (a >= b) printf("The bigger number is %d\n",a);
//if第二种形式
if (a >= b)
{
printf("The bigger number is %d\n", a);
}
else
{
printf("The bigger number is %d\n", b);
}
system("pause");
}
2. 条件选择语句switch语句
如果分支语句太多,将会使用很多if语句,这样导致程序的可读性很差。这里再来了解一下另外一个条件选择语句,多分支选择switch语句, 其一般形式为:
switch(表达式){
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
...
case 常量表达式n: 语句n;break;
default :语句n+1;break;
}
其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。注意如果省略break语句,那么CPU会继续执行表达式对应的常量表达式后面的语句。比如,在switch(表达式)中表达式等于常量表达式2,如果语句2后面没有break,那么cpu执行完语句2将继续执行语句3,4,...语句n
现在我们来举个例子说明.
例4-5-1-2
基本语句之switch
语句创建LED流水灯
#include "reg52.h"
typedef unsigned char uchar;
void delayUs(uchar t);
void delayMs(uchar t);
void main(void)
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
switch(i){
case 0: P1=0XFE;break;//点亮第1个灯
case 1: P1=0XFD;break;//点亮第2个灯
case 2: P1=0XFB;break;//点亮第3个灯
case 3: P1=0XF7;break;//点亮第4个灯
case 4: P1=0XEF;break;//点亮第5个灯
case 5: P1=0XDF;break;//点亮第6个灯
case 6: P1=0XBF;break;//点亮第7个灯
case 7: P1=0X7F;break;//点亮第8个灯
default: P1=0;break;
}
delayMs(255);
}
}
}
void delayUs(uchar t)
{
while(--t);
}
void delayMs(uchar t)
{
while(--t)
{
delayUs(245);
delayUs(245);
}
}
上一篇:51单片机之C语言-4.5基本语句之循环语句
下一篇:51单片机之C语言-4.4运算符及表达式
推荐阅读最新更新时间:2024-03-16 14:48
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- Mentor线上研讨会丨FPGA仿真验证平台ModelSim应用进阶
- 点评《与Atmel SAM D21/R21的相遇、相识、相知(上)》,赢温暖新春礼
- 逛东芝在线展会 开启任意门,答题闯关赢好礼
- 报名直播赢【保温杯】等好礼|TI MSPM0 MCU 在汽车系统中的应用
- 报名有礼:【TI C2000在实时控制系统中的新特性】网络直播诚邀您参与!
- 帮助他人,成就自己:EEWORLD月度问答榜(第5期)
- 【免费申请】英飞凌PSoC 62S4 先锋套件 (CY8CKIT-062S4)
- 我爱 TI Webench 之学课程传设计,赢礼100% !
- 电源情报站 MPS小程序干货推荐,下载有好礼!
- VISHAY工业电源主题月 幸运闯关赢大奖!
- 人工智能机器人“小严”:专注于变频系统业务,24小时全天候在线
- 中国机器人市场进入高速增长期,机器人产业的发展迈入新的层次
- 福伊特一直在协作机器人前沿探索,做到贴近用户的同时为其提供快速且灵活的支持
- 中国老年人口市场巨大,协助老年人生活的机器人应运而生
- FANUC M-410iC机器人:搭载了FANUC最尖端的伺服技术,码垛效率更高
- DARPA为推进制造毫米级到厘米级微型机器人所需的技术制定了一项新计划
- 随着智能机器人的不断发展,以下这些工作岗位在未来20年可能会有风险
- 为了确保铜陵电网迎峰度夏安全供电,智能巡检机器人上线
- 福伊特,抢占先机率先布局中国机器人市场
- 国美在广州和天津投放AGV机器人,用来提高拣货效率