前置
表达式
表达式是将变量或常量与运算符结合起来产生新的值。
- 赋值表达式:a += 1
- 条件判断表达式:a > b
语句
C语言执行的完整的一条逻辑表达,是表达式、变量、常量、关键字等的组合,以分号结束。
- a = a + 1;就是一条语句,以分号结束
语句块
{}包裹起来的一系列语句,对外呈现为一个整体语句,会按序执行完{}中的所有语句。
{
int a = 1;
int b = 2;
int c;
c = a + b;
} //语句块结尾不需要;
条件控制流
根据条件判断表达式的值确定执行哪些语句逻辑。
三元条件判断语句
- 基本格式
(条件判断表达式) ? (语句1) : (语句2);
- 执行效果
- 条件判断表达式值为1,则执行语句1
- 条件判断表达式值为0,则执行语句2
- 代码示例
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 10;
char c;
c = (a > 0) ? a : 0;
printf("c = %d\n", c);
a = -1;
c = (a > 0) ? a : 0;
printf("c = %d\n", c);
return 0;
}
运行结果:
c = 10
c = 0
if-else语句
- 基本格式
if(条件判断表达式)
语句1
else
语句2
- 执行效果
- if之后的表达式值为1时,执行语句或语句块1
- else为可选部分,如果不需要可以不带else
- 存在else分支时,if之后的表达式值为0时,执行语句或语句块2
- 代码演示
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 10;
int b = 5;
int c = 0;
if(a > b) {
c = a - b; //满足条件执行这条
}else {
c = b - a;
}
printf("c = %d\n", c); // c=10-5=5
return 0;
}
运行结果
c = 5
嵌套使用if-else语句
- 代码演示
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 10;
int b = 5;
int c = 0;
if(a > b) {
if(a > 100) //可以嵌套使用,因为if-else也是语句
c = 100;
else
c = a - b; //满足条件执行这条
}else {
c = b - a;
}
printf("c = %d\n", c);
return 0;
}
运行结果:
c = 5
else if语句
- 基本格式
if(条件表达式)
语句1
else if(条件表达式)
语句2
else if(条件表达时)
语句3
.....可以有一系列else if.....
else
语句
- 执行效果
- 总结就是满足哪个条件就执行对应条件后面对应的语句
- 都不满足的时候执行else分支对应的语句
- else分支可选,可有可无
- 代码示例
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 10;
char c;
if(a <= 5) {
c = 'S';
}else if(a <= 10){ //a > 5 && a <= 10
c = 'M';
}else if(a <= 15){ //a >10 && a <= 15
c = 'L';
}else { // a > 15
c = 'X';
}
printf("c = %c\n", c);
return 0;
}
运行结果:
c = M
switch语句
switch语句是一种多路判断语句,判断表达式的值匹配哪个常量整数值,执行匹配到的那个分支中的语句。
- 基本格式
switch(表达式){
case 常量整数值1或者常量表达式1:
语句1
[break;]
case 常量整数值2或者常量表达式2:
语句2;
[break;]
....一系列case语句....
default:
语句
}
- 执行效果
- 计算switch后面的表达式的值
- 表达式的值和case对应的常量值相同时,执行对应case分支对应的语句
- 执行完语句后,如果遇到break,结束整个switch语句
- 如果没有遇到break,不做判断地继续执行之后case中的语句,直到遇到break或到switch结尾
- 如果case都没有匹配到,则执行default中的语句
- default可选,可有可无
- 注:除了break,return也可以跳出switch
- 代码示例
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 10;
char c;
switch(a){
case 1:
c = 'S';
break;
case 10:
case 3:
c = 'M'; //10和3都会匹配到这里,但是没有break,会继续向下,c='L'遇到break退出
case 4:
c = 'L';
break;
default:
c = 'X';
}
printf("c = %c\n", c);
return 0;
}
运行结果:
c = L