C语言基础-控制流之条件控制流

本文详细介绍了C语言中的基本表达式、赋值、条件判断(包括三元条件、if-else、嵌套if-else和elseif)、以及switch语句的用法和执行效果,展示了如何通过这些结构进行程序控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置
表达式

表达式是将变量或常量与运算符结合起来产生新的值。

  • 赋值表达式: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值