C语言基础语法,分支语句

前两节主要介绍了C语言的类型,本节中开始说明C语言中构建复杂语句的方法。这些方法主要解决工程中遇到的问题,如需要根据情况执行不同的代码,这个就涉及到分支和循环语句。

对于分支语句,涉及到的关键字如下所示。

if...elseswitch...case...defaultbreakcontinuereturn分支语句

分支语句主要用于根据不同条件执行不同的代码块。C语言支持两种类型的分支语句:`if...else if...else语句和switch...case语句`。

if语句

其中if语句格式如下所示。

复制代码
// if格式
if (condition1) {
    // 代码块1
} else if (condition2) {
    // 代码块2
} else {
    // 代码块3
}
// 举例说明, if代码块进行表达式判断
if (a > 0) {
     printf("a is positive\n");
} else if (a < 0) {
    printf("a is negative\n");
} else {
    printf("a is zero\n");
}
// 举例说明, if代码块进行表达式判断
if (a == 1) {
     printf("a is one\n");
} else {
    printf("a is other\n");
}

可以看到`if...else if...else`语句可以根据多个条件执行不同的代码块。if语句是按照顺序执行的,当检测到第一次满足条件后,就可以执行对应的代码块,而后续条件则会被忽略。对于if中的语句,支持使用符号`&&(逻辑与)、||(逻辑或)、!`(逻辑非)进行组合。

具体示例如下所示。

复制代码
// 举例说明,逻辑与
if (a > 0 && b > 0) {
     printf("a and b are positive\n");
}
// 举例说明,逻辑或
if (a > 0 || b > 0) {
     printf("a or b is positive\n");
}
// 举例说明,逻辑非
if (!(a > 0)) {
     printf("a is not positive\n");
}

对于C语言来说,如果比较数据短,可以使用`?:`运算符进行条件判断。

其格式如下所示。

复制代码
// ?:格式
(condition) ? expression1 : expression2;
// 举例说明,?:运算符
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
printf("max = %d\n", max);

对于`?:`运算符,如果condition为真,则返回expression1,否则返回expression2。

switch语句

switch语句格式如下所示。

复制代码
// switch格式
switch (expression)
{
    case value1:
        // 代码块1
    break;
    case value2:
        // 代码块2
    break;
    default:
        // 默认代码块
    break;
}
// 举例说明,整型
switch (a)
{
    case 1:
        printf("a is one\n");
    break;
    case 2:
        printf("a is two\n");
    break;
    default:
        printf("a is other\n");
    break;
}
// 举例说明,枚举类型
typedef enum
{
    RED = 0,
   GREEN = 1,
   BLUE = 2,
} color_t;
color_t color = GREEN;
switch (color)
{
    case RED:
        printf("color is red\n");
    break;
    case GREEN:
        printf("color is green\n");
    break;
    case BLUE:
        printf("color is blue\n");
    break;
    default:
        printf("color is other\n");
    break;
}

可以看到,switch语句也可以根据不同的条件执行不同的代码块。不过和if语句不同,switch后要求的是变量,只能是整型(char、short、int、signed)或者枚举类型,不能是表达式;case后要求的是常量表达式或者枚举类型的具体值,不能是变量或者表达式。

注意:**对于switch语句中,除非需要两个case语句连续执行,否则每个case语句后面必须要加上break语句。**这是因为case支持穿透,代码会继续执行,直到遇到break、return或switch结束;很多switch语句中的问题,都是遗漏了break语句导致的。

相关推荐
小龙报2 小时前
【优选算法】1.搜索插入位置 2.x的平方根
java·c语言·数据结构·c++·python·算法·蓝桥杯
SNAKEpc121384 小时前
OpenGL(十五)- 着色器语言GLSL
c语言·c++·线性代数·算法·矩阵·图形渲染·着色器
YSL0701245 小时前
字符函数和字符串函数
c语言
Aurorar0rua8 小时前
CS50 x 2024 Notes Memory - 03
c语言·开发语言·学习方法
捷瑞电子工坊18 小时前
嵌入式秋招面经:5大核心模块高频考题与实战避坑总结
c语言·stm32·嵌入式工程师·rtos·通信协议·嵌入式面试
天空'之城19 小时前
C 语言工业级通用组件手写 30:安全内存拷贝组件
c语言·内存拷贝·工业级组件·安全内存操作
LuminousCPP20 小时前
数据结构-双向循环链表
c语言·数据结构·笔记·链表
小僧景贤1 天前
嵌入式C语言 第二篇:基础语法|嵌入式C与标准C的核心差异
c语言·开发语言·嵌入式c语言
wuyk5551 天前
1.栈:后进先出的线性数据结构
c语言·数据结构·stm32·单片机
LuminousCPP1 天前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode