单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.10语句

1 表达式语句

表达式语句由表达式加上分号";"组成。其一般形式为:

表达式;

执行表达式语句就是计算表达式的值。例如 c=a+a;

2 函数调用语句

由函数名、实际参数加上分号";"组成。其一般形式为:

函数名(实际参数表);

例如 printf("Hello !");

3 控制语句

控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类:

条件判断语句:if语句、switch语句;

循环执行语句:do while语句、while语句、for语句;

转向语句:break语句、goto语句、continue语句、return语句。

1)条件判断语句
a、 if 语句

if...

c 复制代码
if (表达式)

{

	语句;

} 

其中,当表达式为逻辑表达式时,表达式为真,即执行语句。注意当省略"=="逻辑运算符时,非零的任意数据类型都可视为真

c 复制代码
int a;

a = 1;

if (a == 1)

{

	a += 1;

}

printf("a=%d",a);		//a=2

if (a)		//省略了逻辑运算符
{
    a += 1;
}

printf("a=%d",a);		//a=3

当表达式为赋值语句时,则根据赋值结果是否大于0判断是否执行语句。

c 复制代码
int a;

if (a = 1)

{

	a += 1;

}

printf("a=%d",a);		//a=2



if (a = 0)

{

	a += 1;

}

printf("a=%d",a);		//a=0

以上代码虽没有报错,但是会有警告: Using the result of an assignment as a condition without parentheses。

出现这个警号的原因是条件赋值没有加括号。当你特意使用条件赋值时,这个警告可以通过加括号解决,即if((a = 1)) . if((a = 0))

另外一种情况就是。你把逻辑运算符写成了赋值运算符,编译器就是为了纠正这种错误才特意警告。

if ... else ...

c 复制代码
if (表达式) 

{

	语句;

}    

else 

{

	语句;

}  

if ... else if ... else ...

c 复制代码
if (表达式1)

 {

	语句1;

}    

else if (表达式2)

{

	语句2;

} 

else

{

	语句3;

}

<=>

c 复制代码
if (表达式1) 

{

	语句1;

}    

else 

{ 

	if(表达式2)  

	{

		语句2;

	} 

	else

	{

		语句3;

	}

}

 
b、switch语句
c 复制代码
switch(整型数据(包括枚举型)或字符型数据) 

{
	case 常量1: 语句1; break;
	case 常量2: 语句2; break;
	case 常量3: 语句3;
	case 常量4: 语句4; break;//此时常量3执行完语句3后,还要进入到语句4
	...
	default: 语句n;(没有default时不符合则跳过)

}
2)循环执行语句
a、for(表达式1;表达式2;表达式3){}

表达式1用作变量赋值,表达式2用作判断循环的结束条件,表达式3作为变量值的增减

c 复制代码
int sum = 0;

for(int i = 0 ; i < 100 ; i++)

{

	sum += i + 1;

}

printf("sum = %d",sum);
b、while(表达式){语句;}

表达式作为循环的结束条件,当表达式的值为非0时,一直执行语句。

c 复制代码
int sum = 0;

int i = 0;

while (i < 100)

{

	sum += i + 1;

	i += 1;

}

printf("sum = %d",sum);
c、do {语句} while(表达式);

先执行do内的语句,再根据表达式作为循环的结束条件,当表达式的值为非0时,一直执行语句。

c 复制代码
int sum = 0;

int i = 0;

do 

{

	sum += i + 1;

	i += 1;

}

while (i < 100);

printf("sum = %d",sum);
3)转向语句
a、break;

跳出当前循环。常与if配合使用,满足条件时便跳出循环

c 复制代码
int sum = 0;

int i = 0;

while (1)

{

	if (i >= 100)

	{

		break;

	}

	sum += i + 1;

	i += 1;

}

printf("sum = %d",sum);
b、continue;

结束本次循环而进入下此循环,当使用while作为循环语句时,要注意影响循环结束条件的语句是否被continue跳过了

c 复制代码
int sum = 0;

int i = 0;

while (i < 100)

{

    if (i % 2 == 0)

    {
		i += 1;	//跳过循环前先增加i的值,避免产生死循环
        continue;

    }

    sum += i + 1;

    i += 1;

}

printf("sum = %d",sum);
c、return

直接跳出当前函数,并返回值

d、goto

先在程序某处添加标记,如"mark: ",然后使用"goto mark;"跳转

4 复合语句

把多个语句用括号{}括起来组成的一个语句称复合语句。

在程序中应把复合语句看成是单条语句,而不是多条语句。例如:

{ x=y+z; a=b+c; printf("%d%d", x, a); }

5 空语句

只有分号";"组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如:while( getchar()!='\n' );

相关推荐
上不如老下不如小8 分钟前
2025年第七届全国高校计算机能力挑战赛初赛 Python组 编程题汇总
开发语言·python·算法
程序员小白条18 分钟前
你面试时吹过最大的牛是什么?
java·开发语言·数据库·阿里云·面试·职场和发展·毕设
yuuki23323329 分钟前
【C++】初识C++基础
c语言·c++·后端
小年糕是糕手29 分钟前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
豐儀麟阁贵32 分钟前
8.2异常的抛出与捕捉
java·开发语言·python
权泽谦34 分钟前
PHP 版羊了个羊完整开发实战:逻辑解析 + 三消算法 + 全套接口(附源码)
开发语言·php
程序员西西37 分钟前
SpringBoot无感刷新Token实战指南
java·开发语言·前端·后端·计算机·程序员
Coding_Doggy1 小时前
链盾shieldchiain | 团队功能、邀请成员、权限修改、移除成员、SpringSecurity、RBAC权限控制
java·开发语言·数据库
q***64971 小时前
VS与SQL Sever(C语言操作数据库)
c语言·数据库·sql
f***24111 小时前
java学习进阶之路,如果从一个菜鸟进阶成大神
java·开发语言·学习